/* kunpeng 通用样式 (首页/列表页/文章页共用) */
.rounded-main { border-radius: 0.35rem; }
.placeholder-img { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); display: flex; align-items: center; justify-content: center; }
.footer-deepblue { background: #0f172a; }
.line-clamp-2 { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.line-clamp-1 { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; }
.article-thumb { width: 195px; height: 130px; }
.recommend-thumb { width: 100px; height: 66px; }
/* 布局宽度 */
.max-w-site { max-width: 1400px; }
.main-w { width: 818px; }
.side-w { width: 330px; }
.max-w-m { max-width: 640px; }
.bg-page { background: #f6f7fb; }
.text-2xs { font-size: 10px; }
.carousel-track { width: 500%; }
.min-w-2 { min-width: 8px; }
/* 左侧导航 */
.left-nav { width:180px; flex-shrink:0; position:sticky; top:76px; align-self:flex-start; height:fit-content; max-height:calc(100vh - 96px); overflow-y:auto; padding-right:8px; }
@media (max-width:1024px){ .left-nav{display:none;} }
.nav-item-active { background-color:#eef2ff; color:#2563eb; font-weight:500; }
/* 左栏「合集」条目：长名字换行时，菱形与篇数固定对齐**第一行**。
   ⚠️ 原来用 `flex items-center` + 裸文本节点：左栏只有 180px，
      长合集名（「SICP 计算机程序的构造与解释」）必然换行，而 `items-center`
      会把菱形和篇数垂直居中「夹」在两行文字中间 —— 用户截图报过「样式太丑」。
      改成 `items-start` + 名字 `flex:1 1 auto` 之后，换行行与第一行文字左对齐。
   ⚠️ 这里是**纯布局**（display/align/gap），配色在 `theme.css` 里。 */
.col-item { display:flex; align-items:flex-start; gap:8px; }
.col-item .ci-mark { flex-shrink:0; font-size:12px; line-height:1.35; margin-top:2px; }
.col-item .ci-name { flex:1 1 auto; min-width:0; line-height:1.35;
  text-wrap: pretty; }   /* 渐进增强：避免中文名换行后最后一行只剩一个字（「吴恩达深度学/习」） */
.col-item .ci-n { flex-shrink:0; margin-left:4px; line-height:1.35; margin-top:2px;
  font-variant-numeric: tabular-nums; }
.sub-menu { max-height:0; overflow:hidden; transition:max-height 0.25s ease-out; padding-left:1.5rem; }
.sub-menu.open { max-height:500px; transition:max-height 0.35s ease-in; }
.sub-menu li a { font-size:0.8rem; padding:0.4rem 0.75rem; border-radius:0.35rem; }
.has-submenu > .menu-toggle-icon { transition:transform 0.2s; }
.has-submenu.open > .menu-toggle-icon { transform:rotate(90deg); }
/* 顶部导航 */
#topnav-ul, #topnav-ul li, #topnav-m, #topnav-m li { list-style:none; margin:0; padding:0; }
#topnav-ul > li { position:relative; }
#topnav-ul > li > a { display:inline-flex; align-items:center; gap:0.25rem; padding:0.375rem 1rem; border-radius:9999px; font-size:0.875rem; color:#4b5563; transition:all 0.2s; text-decoration:none; white-space:nowrap; }
#topnav-ul > li > a:hover { color:#2563eb; background:#eff6ff; }
#topnav-ul > li:nth-child(2) > a:hover { color:#059669; background:#d1fae5; }
#topnav-ul > li:nth-child(3) > a:hover { color:#7c3aed; background:#ede9fe; }
#topnav-ul > li:nth-child(4) > a:hover { color:#ea580c; background:#fff7ed; }
#topnav-ul > li:nth-child(5) > a:hover { color:#e11d48; background:#ffe4e6; }
#topnav-ul > li:nth-child(6) > a:hover { color:#0891b2; background:#ecfeff; }
#topnav-ul > li:nth-child(7) > a:hover { color:#d97706; background:#fffbeb; }
#topnav-ul > li:nth-child(8) > a:hover { color:#db2777; background:#fdf2f8; }
#topnav-ul > li:nth-child(9) > a:hover { color:#4f46e5; background:#eef2ff; }
#topnav-ul > li:nth-child(10)> a:hover { color:#047857; background:#ecfdf5; }
#topnav-ul > li > ul { position:absolute; top:100%; left:0; background:rgba(255,255,255,0.98); backdrop-filter:blur(12px); border-radius:0.35rem; box-shadow:0 12px 28px rgba(0,0,0,0.08); min-width:140px; padding:0.5rem 0; opacity:0; visibility:hidden; transform:translateY(4px); transition:all 0.2s ease; z-index:60; border:1px solid rgba(0,0,0,0.05); }
#topnav-ul > li:hover > ul { opacity:1; visibility:visible; transform:translateY(0); }
#topnav-ul > li > ul > li { display:block; }
#topnav-ul > li > ul > li > a { display:block; padding:0.5rem 1rem; font-size:0.85rem; color:#374151; transition:all 0.15s; text-decoration:none; white-space:nowrap; }
#topnav-ul > li > ul > li > a:hover { background-color:#f3f4f6; color:#2563eb; }
#topnav-m li a { display:block; padding:0.25rem 0.75rem; border-radius:9999px; font-size:0.75rem; color:#4b5563; white-space:nowrap; transition:all 0.2s; text-decoration:none; }
#topnav-m li a:hover { color:#2563eb; background:#eff6ff; }
#topnav-m li ul { display:none; }
.prose img, article img { display:block; margin:0 auto; max-width:100%; height:auto; }
/* 幻灯片箭头默认隐藏 */
.carousel-btn { opacity:0; transition:opacity 0.3s; }
.carousel-container:hover .carousel-btn { opacity:1; }
/* 移动端侧边抽屉 */
.side-drawer { position:fixed; top:0; left:0; width:260px; height:100%; background:#fff; z-index:100; transform:translateX(-100%); transition:transform 0.3s ease; overflow-y:auto; box-shadow:2px 0 16px rgba(0,0,0,0.08); }
.side-drawer.open { transform:translateX(0); }
.drawer-overlay { position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.35); z-index:99; opacity:0; visibility:hidden; transition:all 0.3s; }
.drawer-overlay.show { opacity:1; visibility:visible; }
