/* =========================================================
   digiblog — 数码风格 / 响应式 Z-BlogPHP 主题
   默认皮肤：亮色（参考 pc528.net 的清爽科技博客风格）
   所有颜色走 CSS 变量；暗色皮肤见 digi-dark.css（仅覆盖变量）
   ========================================================= */

:root {
  --bg:            #f3f5f9;
  --bg-soft:       #eaeef5;
  --panel:         #ffffff;
  --panel-2:       #f7f9fc;
  --border:        #e4e9f1;
  --border-strong: #cfd8e6;
  --text:          #1f2937;
  --text-dim:      #6b7787;
  --text-bright:   #0c1622;
  --accent:        #0ea5b7;   /* 数码青 */
  --accent-2:      #2f6df6;   /* 科技蓝 */
  --accent-soft:   rgba(14,165,183,.10);
  --accent-2soft:  rgba(47,109,246,.10);
  --green:         #15a36b;
  --red:           #e2533f;
  --chip-bg:       #eef3f8;
  --shadow-sm:     0 1px 2px rgba(15,28,55,.04);
  --shadow:       0 1px 2px rgba(15,28,55,.05), 0 10px 30px rgba(15,28,55,.07);
  --radius:        14px;
  --radius-sm:     9px;
  --maxw:          1180px;
  --mono:          "JetBrains Mono","Fira Code","SFMono-Regular",ui-monospace,Menlo,Consolas,"Liberation Mono",monospace;
  --sans:          system-ui,-apple-system,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--sans);
  color: var(--text);
  background-color: var(--bg);
  background-image:
    radial-gradient(900px 480px at 8% -6%, rgba(14,165,183,.07), transparent 60%),
    radial-gradient(820px 460px at 100% 0%, rgba(47,109,246,.06), transparent 60%),
    linear-gradient(rgba(15,28,55,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(15,28,55,.035) 1px, transparent 1px);
  background-size: auto, auto, 46px 46px, 46px 46px;
  background-attachment: fixed;
  line-height: 1.72;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); text-decoration: none; transition: color .18s; }
a:hover { color: var(--accent-2); }

img { max-width: 100%; height: auto; }

::selection { background: var(--accent-soft); color: var(--text-bright); }

/* ---------------- 布局容器 ---------------- */
.wrap { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }

/* ---------------- 顶栏 ---------------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(255,255,255,.86);
  backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
}

.header-inner {
  display: flex; align-items: center; gap: 16px; height: 62px;
}

/* Logo */
.logo {
  font-family: var(--mono); font-weight: 700; font-size: 1.3rem;
  letter-spacing: .5px; color: var(--text-bright);
  display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
}
.logo .grad {
  background: linear-gradient(90deg, var(--accent), var(--accent-2));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* 导航 */
.nav-toggle { display: none; }
.nav-toggle-label {
  display: none; cursor: pointer; width: 42px; height: 42px;
  border: 1px solid var(--border); border-radius: 11px;
  background: var(--panel); position: relative; flex: none;
}
.nav-toggle-label span,
.nav-toggle-label span::before,
.nav-toggle-label span::after {
  content: ""; position: absolute; left: 11px; width: 20px; height: 2px;
  background: var(--text); transition: .25s;
}
.nav-toggle-label span { top: 20px; }
.nav-toggle-label span::before { top: -7px; }
.nav-toggle-label span::after  { top: 7px; }

.nav { display: flex; gap: 2px; align-items: center; }
.nav a {
  font-family: var(--mono); font-size: .9rem; color: var(--text-dim);
  padding: 8px 13px; border-radius: 9px; border: 1px solid transparent;
}
.nav a:hover { color: var(--text-bright); background: var(--bg-soft); }
.nav a.active {
  color: var(--accent); background: var(--accent-soft);
  border-color: rgba(14,165,183,.3);
}

/* 导航模块（页面/分类/标签链接） */
.nav-module {
  display: flex; align-items: center; gap: 2px;
  list-style: none; margin: 0; padding: 0;
}
.nav-module li { list-style: none; margin: 0; padding: 0; }
.nav-module a { display: inline-block; }

/* 顶栏搜索 */
.nav-search { margin-left: auto; }
.nav-search form { display: flex; align-items: center; }
.nav-search input {
  width: 200px; height: 38px; padding: 0 14px;
  border: 1px solid var(--border); border-radius: 10px;
  background: var(--panel-2); color: var(--text); font-family: var(--sans); font-size: .9rem;
  transition: border-color .18s, box-shadow .18s;
}
.nav-search input::placeholder { color: var(--text-dim); }
.nav-search input:focus {
  outline: none; border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}

/* 亮/暗皮肤开关 */
.skin-switch {
  position: relative; flex: none; width: 56px; height: 28px; padding: 0;
  border-radius: 999px; cursor: pointer;
  border: 1px solid var(--border); background: var(--bg-soft);
  box-shadow: inset 0 1px 3px rgba(15,28,55,.08);
  transition: background .28s, border-color .28s;
}
.skin-switch .sk-knob {
  position: absolute; top: 2px; left: 2px; width: 22px; height: 22px;
  display: grid; place-items: center; border-radius: 50%;
  background: #fff; color: #f0a11c; font-size: 12px; line-height: 1;
  box-shadow: 0 1px 3px rgba(15,28,55,.22);
  transition: transform .28s cubic-bezier(.4,.2,.2,1), background .28s, color .28s;
}
.skin-switch .sk-knob::before { content: "\2600"; }
.skin-switch:hover { border-color: var(--border-strong); }
.skin-switch:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
html[data-skin="dark"] .skin-switch {
  background: linear-gradient(90deg, rgba(34,211,238,.18), rgba(168,85,247,.22));
  border-color: rgba(34,211,238,.4);
}
html[data-skin="dark"] .skin-switch .sk-knob {
  transform: translateX(28px); background: #0d1826; color: #7dd3fc;
}
html[data-skin="dark"] .skin-switch .sk-knob::before { content: "\263E"; }

/* ---------------- Hero / 站点标语 ---------------- */
.hero {
  margin: 0 0 24px; padding: 26px 28px;
  border: 1px solid var(--border); border-radius: var(--radius);
  background: linear-gradient(120deg, var(--panel), var(--panel-2));
  position: relative; overflow: hidden; box-shadow: var(--shadow);
}
.hero::before {
  content: ""; position: absolute; right: -50px; top: -50px;
  width: 200px; height: 200px; border-radius: 50%;
  background: radial-gradient(circle, rgba(47,109,246,.18), transparent 70%);
}
.hero h1 {
  font-family: var(--mono); font-size: clamp(1.4rem, 3.6vw, 2.2rem);
  margin: 0 0 8px; color: var(--text-bright); position: relative;
}
.hero p { margin: 0; color: var(--text-dim); font-family: var(--mono); font-size: .95rem; position: relative; }
.hero .tag {
  display: inline-block; margin-top: 14px; padding: 4px 12px;
  font-family: var(--mono); font-size: .78rem; color: var(--green);
  border: 1px solid rgba(21,163,107,.35); border-radius: 999px;
  background: rgba(21,163,107,.08);
}

/* ---------------- 首页 Banner（两张轮播） ---------------- */
.banner {
  position: relative; margin: 6px 0 6px;
  border: 1px solid var(--border); border-radius: var(--radius);
  overflow: hidden; box-shadow: var(--shadow); background: var(--panel);
}
.banner-track {
  display: flex; width: 200%;
  transition: transform .62s cubic-bezier(.4,.15,.2,1);
  will-change: transform;
}
.banner-slide {
  position: relative; flex: 0 0 50%; aspect-ratio: 1600 / 448; height: auto; display: block;
  overflow: hidden; text-decoration: none;
  background: linear-gradient(120deg, #fbfdff 0%, #eef5ff 46%, #e9f8f6 100%);
}
.banner-slide.s2 { background: linear-gradient(120deg, #fbfeff 0%, #edf6ff 44%, #eaf7f4 100%); }
.banner-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover;
}
.banner-mask {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(251,253,255,.94) 0%, rgba(251,253,255,.78) 34%, rgba(251,253,255,.24) 62%, rgba(251,253,255,0) 86%);
}
.banner-text {
  position: relative; z-index: 2; height: 100%;
  display: flex; flex-direction: column; justify-content: center; gap: 6px;
  padding: 0 clamp(20px, 4vw, 56px); padding-left: clamp(74px, 7vw, 92px);
  color: #0f2746;
}
.banner-text .eyebrow {
  font-family: var(--mono); font-size: .76rem; letter-spacing: 1.4px;
  color: #0e8a9c; font-style: normal;
}
.banner-title {
  font-family: var(--mono); font-size: clamp(1.4rem, 2.6vw, 2rem);
  font-weight: 800; letter-spacing: .5px; color: #0e2038; line-height: 1.22;
}
.banner-sub { font-family: var(--mono); font-size: clamp(.84rem, 1.15vw, .96rem); font-weight: 400; color: #4a6280; }
.banner-text .tag {
  display: inline-block; width: fit-content; margin-top: 4px;
  padding: 4px 12px; border-radius: 999px;
  font-family: var(--mono); font-size: .74rem; color: #0f8a5f;
  border: 1px solid rgba(21,163,107,.32); background: rgba(21,163,107,.10);
}
.banner-btn {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 36px; height: 36px; display: grid; place-items: center;
  border-radius: 50%; cursor: pointer; font-size: 21px; line-height: 1; color: #12365c;
  border: 1px solid rgba(15,39,70,.12); background: rgba(255,255,255,.82);
  box-shadow: 0 2px 8px rgba(15,28,55,.10);
  backdrop-filter: blur(6px); transition: background .2s, border-color .2s, color .2s;
}
.banner-btn:hover { background: var(--accent); border-color: transparent; color: #fff; }
.banner-btn.prev { left: 14px; }
.banner-btn.next { right: 14px; }
.banner-dots {
  position: absolute; left: 0; right: 0; bottom: 14px; z-index: 3;
  display: flex; gap: 8px; justify-content: center;
}
.banner-dots .dot {
  width: 22px; height: 4px; padding: 0; border: 0; border-radius: 3px;
  background: rgba(15,39,70,.22); cursor: pointer; transition: width .25s, background .25s;
}
.banner-dots .dot.is-on { width: 34px; background: linear-gradient(90deg, var(--accent-2), var(--accent)); }

/* ---- 亮/暗皮肤配图切换：由 <html data-skin> 驱动，无需脚本、首屏不闪烁 ---- */
.banner-img.img-dark,
.post-thumb .img-dark { display: none; }
html[data-skin="dark"] .banner-img.img-light,
html[data-skin="dark"] .post-thumb .img-light { display: none; }
html[data-skin="dark"] .banner-img.img-dark,
html[data-skin="dark"] .post-thumb .img-dark { display: block; }

/* 暗色皮肤：banner 底图/蒙版/文字/控件同步换成暗系 */
html[data-skin="dark"] .banner-slide {
  background: linear-gradient(120deg, #0a1526 0%, #102a44 46%, #0b2b34 100%);
}
html[data-skin="dark"] .banner-slide.s2 {
  background: linear-gradient(120deg, #0b1424 0%, #14264a 44%, #0c2c2c 100%);
}
html[data-skin="dark"] .banner-mask {
  background: linear-gradient(90deg, rgba(7,14,26,.93) 0%, rgba(7,14,26,.74) 34%, rgba(7,14,26,.22) 62%, rgba(7,14,26,0) 86%);
}
html[data-skin="dark"] .banner-text { color: #eaf4ff; }
html[data-skin="dark"] .banner-text .eyebrow { color: #6fe3f0; }
html[data-skin="dark"] .banner-title { color: #f4f9ff; }
html[data-skin="dark"] .banner-sub { color: #aac6e2; }
html[data-skin="dark"] .banner-text .tag {
  color: #7ff0c0; border-color: rgba(110,231,183,.42); background: rgba(16,185,129,.14);
}
html[data-skin="dark"] .banner-btn {
  color: #e8f4ff; background: rgba(11,22,38,.72); border-color: rgba(120,180,230,.3);
  box-shadow: 0 2px 8px rgba(0,0,0,.3);
}
html[data-skin="dark"] .banner-btn:hover { background: var(--accent); color: #fff; }
html[data-skin="dark"] .banner-dots .dot { background: rgba(200,225,255,.28); }
html[data-skin="dark"] .banner-dots .dot.is-on { background: linear-gradient(90deg, #22d3ee, #a855f7); }
html[data-skin="dark"] .post-thumb { background: #0e1b2e; }
html[data-skin="dark"] .post-thumb .thumb-cat {
  color: #dcecff; background: rgba(8,18,32,.78); border-color: rgba(120,180,230,.28);
  box-shadow: 0 1px 4px rgba(0,0,0,.3);
}

/* ---------------- 主体栅格 ---------------- */
.layout {
  display: grid; grid-template-columns: minmax(0,1fr) 320px; gap: 26px;
  align-items: start; padding-bottom: 50px;
}

/* ---------------- 文章卡片（左图右文，参考 pc528） ---------------- */
.post-list { display: flex; flex-direction: column; gap: 18px; }

.post {
  position: relative; display: grid;
  grid-template-columns: 220px minmax(0,1fr); gap: 20px;
  padding: 18px; border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--panel); box-shadow: var(--shadow-sm);
  transition: transform .2s, border-color .2s, box-shadow .2s;
  overflow: hidden;
}
.post:hover { transform: translateY(-3px); border-color: var(--border-strong); box-shadow: var(--shadow); }

.post-thumb {
  position: relative; align-self: stretch; min-height: 140px;
  border-radius: var(--radius-sm); overflow: hidden; background: var(--bg-soft);
}
.post-thumb a { display: block; height: 100%; }
.post-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.post-thumb .thumb-ph {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%; min-height: 140px;
  font-family: var(--mono); font-size: 1.4rem; font-weight: 700; letter-spacing: 1px;
  color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2));
}
.post-thumb .thumb-cat {
  position: absolute; left: 10px; top: 10px; z-index: 2;
  font-family: var(--mono); font-size: .7rem; line-height: 1;
  padding: 5px 10px; border-radius: 999px; color: #12365c;
  background: rgba(255,255,255,.86); border: 1px solid rgba(15,39,70,.10);
  box-shadow: 0 1px 4px rgba(15,28,55,.08);
  backdrop-filter: blur(4px);
}

.post-body { display: flex; flex-direction: column; min-width: 0; }
.post-body h2 { margin: 2px 0 10px; font-size: 1.22rem; line-height: 1.4; }
.post-body h2 a { color: var(--text-bright); }
.post-body h2 a:hover { color: var(--accent); }

.post-meta {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
  font-family: var(--mono); font-size: .76rem; color: var(--text-dim);
  margin-bottom: 10px;
}
.post-meta .dot { width: 3px; height: 3px; border-radius: 50%; background: var(--border-strong); }
.post-meta .cat { color: var(--accent); }
.post-meta .cat:hover { color: var(--accent-2); }
.post-meta .author { display: inline-flex; align-items: center; gap: 6px; color: var(--text-dim); }
.avatar {
  width: 20px; height: 20px; border-radius: 50%; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .7rem; font-weight: 700; color: #fff;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
}

.post-excerpt { color: var(--text); margin: 0 0 12px; font-size: .95rem; }
.post-excerpt img { border-radius: 10px; margin: 8px 0; border: 1px solid var(--border); }

.read-more {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--mono); font-size: .82rem; color: var(--accent);
  border: 1px solid var(--border-strong); border-radius: 8px; padding: 6px 14px;
  background: var(--panel-2);
}
.read-more:hover { background: var(--accent-soft); color: var(--accent); }

.tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.tags a {
  font-family: var(--mono); font-size: .74rem; color: var(--text-dim);
  padding: 3px 10px; border: 1px solid var(--border); border-radius: 6px; background: var(--panel-2);
}
.tags a:hover { color: var(--accent); border-color: rgba(14,165,183,.4); }

/* 分类/标签 小药丸 */
.chip {
  display: inline-block; font-family: var(--mono); font-size: .72rem;
  padding: 2px 9px; border-radius: 999px; color: var(--accent);
  background: var(--accent-soft); border: 1px solid rgba(14,165,183,.28);
}

/* 置顶徽标 */
.badge-top {
  font-family: var(--mono); font-size: .68rem; color: #fff; font-weight: 700;
  background: linear-gradient(90deg, var(--accent), var(--accent-2));
  padding: 2px 8px; border-radius: 5px; margin-left: 8px; vertical-align: middle;
}

/* ---------------- 侧边栏 ---------------- */
.sidebar { display: flex; flex-direction: column; gap: 10px; position: sticky; top: 82px; }
/* 侧栏列表统一单行显示，超出省略；去掉默认小黑点 */
.sidebar .widget li,
.widget li { list-style: none; }
.widget li::marker { content: ""; }
.sidebar .widget li { overflow: hidden; }
.sidebar .widget li > a {
  display: block; max-width: 100%; line-height: 1.35;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.widget {
  border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--panel); box-shadow: var(--shadow-sm); padding: 12px 15px 13px;
}
.widget h3 {
  font-size: .92rem; line-height: 1.3; margin: 0 0 7px; color: var(--text-bright);
  display: flex; align-items: center; gap: 7px; font-weight: 700;
}
/* 模块标题前：芯片图标（mask 让亮/暗皮肤自动取各自强调色） */
.widget h3::before {
  content: ""; flex: none; width: 14px; height: 14px;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='3' y='3' width='10' height='10' rx='2' fill='none' stroke='%23000' stroke-width='1.7'/%3E%3Ccircle cx='8' cy='8' r='1.7' fill='%23000'/%3E%3Cpath d='M6 0.6v2.4M10 0.6v2.4M6 13v2.4M10 13v2.4M0.6 6h2.4M0.6 10h2.4M13 6h2.4M13 10h2.4' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='3' y='3' width='10' height='10' rx='2' fill='none' stroke='%23000' stroke-width='1.7'/%3E%3Ccircle cx='8' cy='8' r='1.7' fill='%23000'/%3E%3Cpath d='M6 0.6v2.4M10 0.6v2.4M6 13v2.4M10 13v2.4M0.6 6h2.4M0.6 10h2.4M13 6h2.4M13 10h2.4' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.widget ul { list-style: none; margin: 0; padding: 0; }
/* 行距收紧：原 8px 上下 padding 让每行高达 45px，现为 1px + 1.45 行高 */
.widget li { padding: 1px 0; line-height: 1.45; border-bottom: 1px dashed var(--border); }
.widget li:last-child { border-bottom: 0; }
.widget li a { color: var(--text); }
.widget li a:hover { color: var(--accent); }
/* 每条小标题前：电路节点图标 */
.sidebar .widget li > a::before {
  content: ""; display: inline-block;
  width: 11px; height: 11px; margin-right: 8px; vertical-align: -1px;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 8h5.5' stroke='%23000' stroke-width='1.9' stroke-linecap='round'/%3E%3Ccircle cx='11' cy='8' r='3.2' fill='none' stroke='%23000' stroke-width='1.9'/%3E%3Ccircle cx='11' cy='8' r='1.2' fill='%23000'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 8h5.5' stroke='%23000' stroke-width='1.9' stroke-linecap='round'/%3E%3Ccircle cx='11' cy='8' r='3.2' fill='none' stroke='%23000' stroke-width='1.9'/%3E%3Ccircle cx='11' cy='8' r='1.2' fill='%23000'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform .18s;
}
.sidebar .widget li > a:hover::before { transform: translateX(2px); }
html[data-skin="dark"] .sidebar .widget li > a::before { filter: brightness(1.25); }
.widget .stat { font-family: var(--mono); color: var(--accent); margin-left: 4px; }

/* 日历：Z-BlogPHP 输出 <table id="tbCalendar">，核心无样式会把 7 列挤成一团 */
.widget #tbCalendar {
  width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 1px;
  font-family: var(--mono); font-variant-numeric: tabular-nums;
}
.widget #tbCalendar caption {
  font-size: 0; /* 吃掉核心输出的 &nbsp; 占位 */
  padding: 0 0 2px; margin-bottom: 2px;
  border-bottom: 1px solid var(--border);
  text-align: center; white-space: nowrap;
}
.widget #tbCalendar caption a {
  display: inline-block; vertical-align: middle; margin: 0 8px;
  font-size: .85rem; font-weight: 700; letter-spacing: .3px;
  color: var(--text-bright); text-decoration: none;
}
.widget #tbCalendar caption a[title] {
  width: 20px; height: 20px; line-height: 18px; margin: 0;
  font-size: 1rem; font-weight: 400; color: var(--accent);
  background: var(--panel-2); border: 1px solid var(--border); border-radius: 7px;
  transition: background .2s, color .2s, border-color .2s;
}
.widget #tbCalendar caption a[title]:hover { background: var(--accent); border-color: transparent; color: #fff; }
.widget #tbCalendar th {
  padding: 0 0 1px; text-align: center;
  font-size: .68rem; font-weight: 600; color: var(--text-dim);
}
.widget #tbCalendar th small { font-size: inherit; font-weight: inherit; }
.widget #tbCalendar th:nth-child(6),
.widget #tbCalendar th:nth-child(7) { color: var(--accent); }
.widget #tbCalendar td {
  height: 17px; padding: 0; text-align: center; vertical-align: middle;
  font-size: .74rem; color: var(--text-dim); border-radius: 6px;
}
.widget #tbCalendar td:not(:empty) { background: var(--panel-2); }
.widget #tbCalendar td a {
  display: block; height: 17px; line-height: 17px; border-radius: 6px;
  font-weight: 700; color: #fff; text-decoration: none;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
}
.widget #tbCalendar td a:hover { filter: brightness(1.12); }
html[data-skin="dark"] .widget #tbCalendar td a { color: #06121c; }
html[data-skin="dark"] .widget #tbCalendar td { color: var(--text); }
html[data-skin="dark"] .widget #tbCalendar td:not(:empty) {
  background: rgba(34,211,238,.075);
  box-shadow: inset 0 0 0 1px rgba(34,211,238,.10);
}
.widget input[type=text],
.widget input[type=search],
.widget input[type=email],
.widget input[type=url],
.widget select,
.widget textarea {
  background: var(--panel-2); color: var(--text);
  border: 1px solid var(--border); border-radius: 8px;
  padding: 6px 10px; font-family: var(--sans); font-size: .9rem; max-width: 100%;
}
.widget input[type=submit],
.widget button {
  background: var(--accent-soft); color: var(--accent);
  border: 1px solid rgba(14,165,183,.35); border-radius: 8px;
  padding: 6px 12px; cursor: pointer; font-family: var(--sans); font-size: .88rem;
}
.widget input[type=submit]:hover,
.widget button:hover { color: var(--accent-2); border-color: var(--accent-2); }
.widget select option { background: var(--panel); color: var(--text); }
/* 标签云模块（Z-BlogPHP 可能输出 .widget-tags） */
.widget-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.widget-tags li { border: 0; padding: 0; }
.widget-tags li > a::before { display: none; }
.widget-tags a {
  display: inline-block; font-size: .8rem; color: var(--text-dim);
  padding: 4px 11px; border: 1px solid var(--border); border-radius: 999px; background: var(--panel-2);
}
.widget-tags a:hover { color: var(--accent); border-color: rgba(14,165,183,.4); }

/* ---------------- 3D 标签云（侧栏，桌面端） ---------------- */
.tagsphere {
  position: relative; height: 212px; margin: 0 -10px; overflow: hidden;
}
.tagsphere .ts-tag {
  position: absolute; left: 50%; top: 50%;
  font-family: var(--mono); font-weight: 600; line-height: 1.15;
  white-space: nowrap; text-decoration: none;
  will-change: transform, opacity; transition: color .2s;
}
.tagsphere .ts-tag .tag-count { font-size: .66em; opacity: .55; font-weight: 400; }
.tagsphere.is-hot .ts-tag:hover {
  color: var(--accent-2) !important;
  text-shadow: 0 0 14px rgba(47,109,246,.35);
}
@media (min-width: 761px) { .tc-hidden { display: none !important; } }
@media (max-width: 760px) { .tagsphere { display: none; } }

/* ---------------- 文章详情页 ---------------- */
.post-full {
  border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--panel); box-shadow: var(--shadow-sm); padding: 28px 30px 32px;
}
.post-full h1 { font-size: clamp(1.5rem,3.8vw,2.1rem); margin: 0 0 12px; line-height: 1.35; color: var(--text-bright); }
.post-full h2, .post-full h3 { color: var(--accent); margin-top: 22px; }
.post-full p { margin: 0 0 16px; }
.post-full img { border-radius: 10px; border: 1px solid var(--border); }
.post-full pre {
  background: #0e1726; border: 1px solid var(--border); border-radius: 10px;
  padding: 16px; overflow: auto; font-family: var(--mono); font-size: .85rem; color: #9fe7f5;
}
.post-full code { font-family: var(--mono); color: var(--accent-2); background: var(--accent-2soft); padding: 1px 6px; border-radius: 5px; }
.post-full pre code { background: none; padding: 0; color: inherit; }
.post-full blockquote {
  margin: 0 0 16px; padding: 12px 18px; border-left: 3px solid var(--accent);
  background: var(--accent-soft); color: var(--text); border-radius: 0 10px 10px 0;
}

/* ---------------- 分页 ---------------- */
.pagebar { display: flex; flex-wrap: wrap; gap: 8px; margin: 24px 0; justify-content: center; }
.pagebar a, .pagebar span {
  font-family: var(--mono); font-size: .85rem; min-width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 12px; border: 1px solid var(--border); border-radius: 9px; color: var(--text-dim);
  background: var(--panel);
}
.pagebar a:hover { color: var(--accent); border-color: rgba(14,165,183,.4); }
.pagebar .now {
  color: #fff; background: linear-gradient(90deg,var(--accent),var(--accent-2));
  border-color: transparent; font-weight: 700;
}

/* 滚动浮动快捷按钮：回到顶部 / 返回首页 */
.digi-fab {
  position: fixed; right: 22px; bottom: 22px; z-index: 60;
  display: flex; flex-direction: column; gap: 10px;
  opacity: 0; visibility: hidden; transform: translateY(14px);
  transition: opacity .25s, transform .25s, visibility .25s;
}
.digi-fab.is-on { opacity: 1; visibility: visible; transform: none; }
.fab-btn {
  position: relative; width: 44px; height: 44px;
  display: grid; place-items: center; padding: 0;
  border-radius: 12px; cursor: pointer; text-decoration: none;
  color: var(--accent); background: var(--panel);
  border: 1px solid var(--border-strong);
  box-shadow: var(--shadow);
  backdrop-filter: blur(8px);
  transition: transform .2s, color .2s, background .2s, border-color .2s;
}
.fab-btn svg {
  width: 20px; height: 20px; fill: none; stroke: currentColor;
  stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round;
}
.fab-btn:hover {
  transform: translateY(-2px); color: #fff; border-color: transparent;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
}
.fab-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.fab-btn::after {
  content: attr(data-label); position: absolute; right: calc(100% + 10px);
  top: 50%; transform: translateY(-50%) translateX(5px);
  white-space: nowrap; padding: 5px 10px; border-radius: 7px;
  font-family: var(--mono); font-size: .74rem;
  color: var(--text-bright); background: var(--panel);
  border: 1px solid var(--border); box-shadow: var(--shadow-sm);
  opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
}
.fab-btn:hover::after { opacity: 1; transform: translateY(-50%) translateX(0); }
/* 顶部按钮外圈：2px 阅读进度细环（浅色轨道 + 强调色已完成部分） */
.fab-top::before {
  content: ""; position: absolute; inset: -6px; border-radius: 18px; padding: 2px;
  background: conic-gradient(from -90deg,
    var(--accent) 0 calc(var(--fab-progress, 0) * 1%),
    rgba(120, 150, 190, .22) calc(var(--fab-progress, 0) * 1%) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  opacity: .9; pointer-events: none;
}

/* 下滑自动换页的状态条 */
.digi-load {
  display: flex; align-items: center; justify-content: center; gap: 9px;
  min-height: 40px; margin: 2px 0 0;
  font-family: var(--mono); font-size: .8rem; color: var(--text-dim);
}
.digi-load .dl-spin {
  width: 15px; height: 15px; flex: none; border-radius: 50%;
  border: 2px solid var(--border-strong); border-top-color: var(--accent);
  animation: dlspin .8s linear infinite;
}
@keyframes dlspin { to { transform: rotate(360deg); } }
.digi-load .dl-hint { opacity: .78; }
.digi-load .dl-done { color: var(--accent); }
.digi-load .dl-retry {
  font: inherit; padding: 6px 14px; border-radius: 8px; cursor: pointer;
  color: var(--accent); background: var(--panel); border: 1px solid var(--border);
}
.digi-load .dl-retry:hover { border-color: var(--accent); }

/* ---------------- 评论 ---------------- */
.comments { margin-top: 26px; }
.comments h3, .comment-post h3 { color: var(--text-bright); }
.comment-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.comment-item {
  border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; background: var(--panel);
}
.comment-item .c-meta { font-family: var(--mono); font-size: .8rem; color: var(--text-dim); margin-bottom: 6px; }
.comment-item .c-meta b { color: var(--accent); }
.comment-form { margin-top: 18px; display: grid; gap: 12px; }
.comment-form input, .comment-form textarea {
  width: 100%; background: var(--panel-2); border: 1px solid var(--border);
  border-radius: 10px; padding: 11px 14px; color: var(--text); font-family: var(--sans); font-size: .9rem;
}
.comment-form input:focus, .comment-form textarea:focus {
  outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft);
}
.comment-form .btn {
  justify-self: start; cursor: pointer; font-family: var(--mono); color: #fff; font-weight: 700;
  background: linear-gradient(90deg,var(--accent),var(--accent-2)); border: 0; border-radius: 10px;
  padding: 11px 26px; transition: filter .2s;
}
.comment-form .btn:hover { filter: brightness(1.06); }
.comment-form .btn:disabled { opacity: .6; cursor: wait; }
.comment-tip {
  display: none; font-size: .86rem; line-height: 1.5; padding: 9px 12px;
  border-radius: 9px; border: 1px solid var(--border); background: var(--panel-2);
  color: var(--text-dim);
}
.comment-tip.is-loading, .comment-tip.is-ok, .comment-tip.is-err { display: block; }
.comment-tip.is-ok { color: #0a8f5b; border-color: #0a8f5b55; background: #0a8f5b12; }
.comment-tip.is-err { color: #d64545; border-color: #d6454555; background: #d6454512; }
html[data-skin="dark"] .comment-tip.is-ok { color: #4ade80; }
html[data-skin="dark"] .comment-tip.is-err { color: #ff8a8a; }

/* ---------------- 页脚 ---------------- */
.site-footer {
  border-top: 1px solid var(--border); margin-top: 34px;
  background: linear-gradient(180deg, var(--bg-soft), var(--panel));
}
.footer-inner { display: flex; flex-direction: column; gap: 12px; padding: 22px 0 20px; }
.footer-top { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; }
.footer-brand { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.footer-logo {
  font-family: var(--mono); font-size: 1.02rem; font-weight: 800; letter-spacing: .5px;
  color: var(--text-bright); display: inline-flex; align-items: center; gap: 8px;
}
.footer-logo::before {
  content: ""; width: 10px; height: 10px; border-radius: 2.5px; display: inline-block;
  background: linear-gradient(135deg, var(--accent-2), var(--accent));
  box-shadow: 0 0 0 2px var(--accent-soft);
}
.footer-motto { font-size: .8rem; color: var(--text-dim); }
.footer-links { display: flex; gap: 6px 18px; flex-wrap: wrap; }
.footer-links a {
  font-family: var(--mono); font-size: .82rem; color: var(--text-dim);
  padding: 5px 2px; border-bottom: 2px solid transparent; transition: color .2s, border-color .2s;
}
.footer-links a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.footer-bottom {
  display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; justify-content: space-between;
  border-top: 1px dashed var(--border); padding-top: 11px;
  font-family: var(--mono); font-size: .74rem; color: var(--text-dim);
}
.footer-bottom p { margin: 0; }
.footer-pulse { color: var(--accent); }

/* ---------------- 404 / 搜索 ---------------- */
.empty, .search-box { text-align: center; padding: 50px 20px; }
.search-box input {
  width: min(420px, 100%); background: var(--panel-2); border: 1px solid var(--border-strong);
  border-radius: 10px; padding: 12px 16px; color: var(--text); font-family: var(--mono);
}
.search-box input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }

/* =========================================================
   响应式：平板 / 手机
   ========================================================= */
/* 平板：保留双栏布局，但文章卡片改为上图下文（更利于窄屏阅读） */
@media (max-width: 980px) {
  .post { grid-template-columns: 1fr; padding: 14px; gap: 12px; }
  .post-thumb { min-height: 180px; }
}

/* 手机：单栏 + 汉堡菜单 */
@media (max-width: 760px) {
  body { font-size: 15px; }
  .wrap { padding: 0 14px; }

  .layout { grid-template-columns: 1fr; }
  .sidebar { position: static; flex-direction: row; flex-wrap: wrap; }
  .widget { flex: 1 1 240px; }

  /* 汉堡菜单 */
  .nav-toggle-label { display: block; margin-left: auto; }
  .skin-switch { width: 50px; height: 26px; }
  .skin-switch .sk-knob { width: 20px; height: 20px; font-size: 11px; }
  html[data-skin="dark"] .skin-switch .sk-knob { transform: translateX(24px); }
  .nav-module { flex-direction: column; align-items: stretch; gap: 2px; }
  .nav {
    position: absolute; top: 100%; left: 0; right: 0;
    flex-direction: column; align-items: stretch; gap: 2px;
    background: var(--panel);
    padding: 0 14px; max-height: 0; overflow: hidden;
    border-bottom: 0; box-shadow: none;
    transition: max-height .3s ease, padding .3s ease;
  }
  .nav-toggle:checked ~ .nav {
    max-height: 80vh; padding: 10px 14px 16px;
    border-bottom: 1px solid var(--border); box-shadow: var(--shadow);
  }
  .nav a { padding: 12px 14px; }
  /* 移动端：隐藏顶栏搜索，下拉菜单内的“搜索”链接兜底 */
  .nav-search { display: none; }
  .nav-toggle:checked ~ .nav-toggle-label span { background: transparent; }
  .nav-toggle:checked ~ .nav-toggle-label span::before { top: 0; transform: rotate(45deg); }
  .nav-toggle:checked ~ .nav-toggle-label span::after  { top: 0; transform: rotate(-45deg); }

  .header-inner { height: 56px; gap: 10px; }

  .hero { padding: 18px 16px; margin: 0 0 16px; }
  .post-thumb, .post-thumb .thumb-ph { min-height: 0; height: 128px; }
  .post-thumb .thumb-ph { font-size: 1rem; letter-spacing: .5px; }
  .banner { margin: 6px 0 4px; }
  .banner-btn { display: none; }
  .banner-text { padding: 0 14px; gap: 2px; padding-left: 0; align-items: center; text-align: center; }
  .banner-mask { background: linear-gradient(90deg, rgba(251,253,255,.95) 0%, rgba(251,253,255,.82) 58%, rgba(251,253,255,.35) 100%); }
  html[data-skin="dark"] .banner-mask { background: linear-gradient(90deg, rgba(7,14,26,.94) 0%, rgba(7,14,26,.80) 58%, rgba(7,14,26,.32) 100%); }
  .banner-title { font-size: .95rem; }
  .banner-sub { font-size: .66rem; line-height: 1.3; }
  .banner-text .eyebrow { font-size: .58rem; letter-spacing: .8px; }
  .banner-dots { bottom: 6px; }
  .banner-text .tag { margin-top: 2px; padding: 3px 10px; font-size: .7rem; }
  .post-body h2 { font-size: 1.12rem; }
  .post-full { padding: 18px 15px 22px; }
  .widget { flex: 1 1 100%; }
  .widget #tbCalendar td,
  .widget #tbCalendar td a { height: 19px; line-height: 19px; }
  .digi-fab { right: 14px; bottom: 14px; gap: 8px; }
  .fab-btn { width: 40px; height: 40px; border-radius: 11px; }
  .fab-btn::after { display: none; }
  .footer-inner { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
  body { animation: none; }
  .digi-load .dl-spin { animation: none; }
  * { transition: none !important; }
}


/* =========================================================
   v12 ICON SYSTEM — 侧栏每个模块用不同的小标题 / 列表项图标
   用 --ico-title / --ico-item 两个自定义属性承载 mask 图，
   渐变底色继续走 --accent / --accent-2，亮暗皮肤自动适配。
   ========================================================= */
:root {
  --i-chip: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.2' y='3.2' width='9.6' height='9.6' rx='2'/%3E%3Ccircle cx='8' cy='8' r='1.6' fill='%23000' stroke='none'/%3E%3Cpath d='M6 .8v2.4M10 .8v2.4M6 12.8v2.4M10 12.8v2.4M.8 6h2.4M.8 10h2.4M12.8 6h2.4M12.8 10h2.4'/%3E%3C/svg%3E");
  --i-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='8' r='6.2'/%3E%3Cpath d='M8 4.3V8l2.7 1.8'/%3E%3C/svg%3E");
  --i-folder: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.7 4.1h4.3l1.5 1.9h6.8v7.4H1.7z'/%3E%3Cpath d='M5.2 9h5.6'/%3E%3C/svg%3E");
  --i-archive: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1.5' y='2.2' width='13' height='3.2' rx='1'/%3E%3Cpath d='M2.8 5.4v8h10.4v-8M6.3 8.6h3.4'/%3E%3C/svg%3E");
  --i-cal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1.6' y='3' width='12.8' height='11' rx='2'/%3E%3Cpath d='M1.6 6.6h12.8M5 1.6v2.8M11 1.6v2.8'/%3E%3Ccircle cx='5.4' cy='9.8' r='0.9' fill='%23000' stroke='none'/%3E%3Ccircle cx='10.6' cy='9.8' r='0.9' fill='%23000' stroke='none'/%3E%3C/svg%3E");
  --i-tag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8.3 1.7H14v5.7L7.3 14.3 1.7 8.7z'/%3E%3Ccircle cx='11.2' cy='4.8' r='1.2'/%3E%3C/svg%3E");
  --i-server: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='2' width='12' height='4' rx='1'/%3E%3Crect x='2' y='10' width='12' height='4' rx='1'/%3E%3Ccircle cx='4.6' cy='4' r='0.8' fill='%23000' stroke='none'/%3E%3Ccircle cx='4.6' cy='12' r='0.8' fill='%23000' stroke='none'/%3E%3Cpath d='M7.4 4h4.2M7.4 12h4.2'/%3E%3C/svg%3E");
  --i-grid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1.6' y='1.6' width='5' height='5' rx='1'/%3E%3Crect x='9.4' y='1.6' width='5' height='5' rx='1'/%3E%3Crect x='1.6' y='9.4' width='5' height='5' rx='1'/%3E%3Crect x='9.4' y='9.4' width='5' height='5' rx='1'/%3E%3C/svg%3E");
  --i-sliders: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 4.4h12M2 8h12M2 11.6h12'/%3E%3Ccircle cx='5.6' cy='4.4' r='1.9'/%3E%3Ccircle cx='10.4' cy='8' r='1.9'/%3E%3Ccircle cx='6.8' cy='11.6' r='1.9'/%3E%3C/svg%3E");
  --i-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m8 1.6 1.9 4 4.4.6-3.2 3.1.8 4.3L8 11.5l-3.9 2.1.8-4.3L1.7 6.2l4.4-.6z'/%3E%3C/svg%3E");
  --i-bubble: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.2 3.2h11.6v8H7.6L3.4 14v-2.8H2.2z'/%3E%3Cpath d='M5.4 6.4h5.2M5.4 8.8h3.4'/%3E%3C/svg%3E");
  --i-link: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.2 8h4M9.8 8h4'/%3E%3Ccircle cx='8' cy='8' r='2.4'/%3E%3C/svg%3E");
  --i-node: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 8h5.3'/%3E%3Ccircle cx='11' cy='8' r='3.2'/%3E%3Ccircle cx='11' cy='8' r='1.1' fill='%23000' stroke='none'/%3E%3C/svg%3E");
  --i-pulse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 8h2.8l1.9-3.6 2.7 7.2 1.8-3.6H15'/%3E%3C/svg%3E");
  --i-tree: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='1.6' width='4.2' height='3.2' rx='1'/%3E%3Crect x='9.6' y='1.6' width='5.2' height='3.2' rx='1'/%3E%3Crect x='9.6' y='11.2' width='5.2' height='3.2' rx='1'/%3E%3Cpath d='M5.2 3.2h2.2v9.6h2.2'/%3E%3C/svg%3E");
  --i-doc: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.2 1.8h6.2l3.4 3.4v9H3.2z'/%3E%3Cpath d='M9.4 1.8v3.4h3.4M5.6 8.4h4.8M5.6 11h3.4'/%3E%3C/svg%3E");
  --i-diamond: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 1.5 14.5 8 8 14.5 1.5 8z'/%3E%3Ccircle cx='8' cy='8' r='1.5'/%3E%3C/svg%3E");
  --i-target: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='8' r='3.2'/%3E%3Cpath d='M8 1v2M8 13v2M1 8h2M13 8h2'/%3E%3C/svg%3E");
  --i-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.6 8h10M9 4.4 12.6 8 9 11.6'/%3E%3C/svg%3E");
  --i-dice: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='2' width='12' height='12' rx='2'/%3E%3Ccircle cx='5.2' cy='5.2' r='1' fill='%23000' stroke='none'/%3E%3Ccircle cx='8' cy='8' r='1' fill='%23000' stroke='none'/%3E%3Ccircle cx='10.8' cy='10.8' r='1' fill='%23000' stroke='none'/%3E%3C/svg%3E");
  --i-hash: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.8 1.8 4.3 14.2M11.5 1.8 10 14.2M1.8 5.8h12.4M1.8 10.2h12.4'/%3E%3C/svg%3E");
}
.widget { --ico-title: var(--i-chip); --ico-item: var(--i-node); }
.widget h3::before {
  -webkit-mask: var(--ico-title) center / contain no-repeat;
  mask: var(--ico-title) center / contain no-repeat;
}
.sidebar .widget li > a::before {
  -webkit-mask: var(--ico-item) center / contain no-repeat;
  mask: var(--ico-item) center / contain no-repeat;
}
.widget-calendar { --ico-title: var(--i-cal); --ico-item: var(--i-target); }
.widget-archive { --ico-title: var(--i-archive); --ico-item: var(--i-doc); }
.widget-recent { --ico-title: var(--i-clock); --ico-item: var(--i-pulse); }
.widget-catalog { --ico-title: var(--i-folder); --ico-item: var(--i-tree); }
.widget-taglist { --ico-title: var(--i-tag); --ico-item: var(--i-hash); }
.widget-siteinfo { --ico-title: var(--i-server); --ico-item: var(--i-target); }
.widget-icons { --ico-title: var(--i-grid); --ico-item: var(--i-diamond); }
.widget-control { --ico-title: var(--i-sliders); --ico-item: var(--i-chevron); }
.widget-random { --ico-title: var(--i-star); --ico-item: var(--i-dice); }
.widget-comments { --ico-title: var(--i-bubble); --ico-item: var(--i-bubble); }
.widget-links { --ico-title: var(--i-link); --ico-item: var(--i-node); }

/* =========================================================
   v12 POST CARD — 文章正文内「随机文章 / 热门文章 / 热评文章」
   插件把写死 background:#f8f8f8 的内联 <style> 注入正文，
   这里用更高特异性 + !important 统一成主题面板卡片。
   ========================================================= */
.post-body .umPostArticle {
  margin: 26px 0 4px !important;
  padding: 16px 20px 18px !important;
  background: linear-gradient(120deg, var(--panel), var(--panel-2)) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius) !important;
  box-shadow: var(--shadow-sm) !important;
  color: var(--text);
}
.post-body .umPostArticle .umPostTabe {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding-bottom: 12px !important; margin-bottom: 12px !important;
  border-bottom: 1px solid var(--border) !important;
}
.post-body .umPostArticle .umPostTabe li {
  margin: 0 !important; padding: 0 !important;
  font-size: .86rem !important; font-weight: 700; overflow: visible;
}
.post-body .umPostArticle .umPostTabe li .umTit {
  display: inline-block; margin: 0 !important;
  padding: 5px 13px !important; font-size: .86rem !important; font-weight: 700;
  color: var(--text-dim) !important;
  background: var(--panel-2) !important;
  border: 1px solid var(--border) !important; border-radius: 999px;
  transition: color .2s, background .2s, border-color .2s, box-shadow .2s;
}
.post-body .umPostArticle .umPostTabe li:hover .umTit {
  color: var(--accent) !important; border-color: var(--accent) !important;
}
.post-body .umPostArticle .umPostTabe li.active .umTit {
  color: #fff !important;
  background: linear-gradient(135deg, var(--accent), var(--accent-2)) !important;
  border-color: transparent !important;
  box-shadow: 0 4px 14px rgba(47,109,246,.22);
}
.post-body .umPostArticle .umPostTabe li.active .umTit:after { display: none !important; }
.post-body .umPostArticle .umPostTabeCon li {
  font-size: .88rem !important; line-height: 1.85; padding: 3px 0 !important;
  border-bottom: 1px dashed var(--border);
}
.post-body .umPostArticle .umPostTabeCon li:last-child { border-bottom: 0; }
.post-body .umPostArticle .umPostTabeCon li a {
  color: var(--text) !important; text-decoration: none;
}
.post-body .umPostArticle .umPostTabeCon li a:hover { color: var(--accent) !important; }
.post-body .umPostArticle .umPostTabeCon li i {
  width: 20px !important; height: 20px !important; line-height: 19px !important;
  margin-right: 10px !important; vertical-align: 1px;
  font-family: var(--mono); font-size: .7rem !important; font-weight: 700;
  font-style: normal !important; color: var(--accent) !important;
  background: var(--accent-soft) !important;
  border: 1px solid var(--border); border-radius: 6px !important;
}
.post-body .umPostArticle .umPostTabeCon li i.num1,
.post-body .umPostArticle .umPostTabeCon li i.num2,
.post-body .umPostArticle .umPostTabeCon li i.num3 {
  color: #fff !important;
  background: linear-gradient(135deg, var(--accent), var(--accent-2)) !important;
  border-color: transparent !important;
}
.post-body .umPostArticle .umPostTabeCon .random li i {
  width: 7px !important; height: 7px !important; line-height: 7px !important;
  margin-right: 11px !important; border: 0 !important; border-radius: 50% !important;
  background: linear-gradient(135deg, var(--accent), var(--accent-2)) !important;
}
html[data-skin="dark"] .post-body .umPostArticle .umPostTabe li.active .umTit {
  color: #06121c !important;
}
@media (max-width: 560px) {
  .post-body .umPostArticle { padding: 13px 14px 15px !important; }
  .post-body .umPostArticle .umPostTabe { gap: 6px; }
  .post-body .umPostArticle .umPostTabe li .umTit {
    padding: 4px 10px !important; font-size: .8rem !important;
  }
}

/* 标签列表保持块级：3D 标签云容器需要正常块流，不能被 flex 化 */
.widget-taglist { display: block; }

/* 文章页栅格：插件列表 white-space:nowrap 的长标题会撑开手机端 grid track */
.layout > main { min-width: 0; }
.post-full, .post-body { min-width: 0; max-width: 100%; }
.post-body .umPostArticle { min-width: 0; max-width: 100%; }
@media (max-width: 760px) {
  .layout { grid-template-columns: minmax(0, 1fr); }
}

/* =========================================================
   v13 侧栏紧凑化 · 定点规则
   通用部分已直接改在上方基础规则中：sidebar gap 14→10、
   widget padding 16/18→12/15/13、h3 .98→.92rem、li 行距、
   日历格子 30→26、标签云 320→252、banner 296→236（手机 168→140）。
   下面针对核心模块输出的特殊结构再收一轮，避免大块留白。
   ========================================================= */
/* 站点信息：核心输出纯文本 li（无 a），统一小字号避免行高被撑开 */
.widget-siteinfo li { font-size: .86rem; line-height: 1.4; }
/* 图标汇集：RSS 位图在 HTML 里写死 height=31，等比缩到 26 */
.widget-icons li img { height: 26px; width: auto; }
/* 控制面板：欢迎语 + 登录/权限链接压成一行 */
.widget-control { padding-left: 11px; padding-right: 11px; }
.widget-control br { display: none; }
.widget-control span {
  display: inline-block; margin-right: 8px;
  font-size: .76rem; line-height: 1.5; white-space: nowrap; vertical-align: middle;
}
.widget-control .cp-hello { max-width: 175px; overflow: hidden; text-overflow: ellipsis; }
/* 文章归档：下拉框 */
.widget-archive select { padding: 4px 10px; font-size: .86rem; }
/* 侧栏表单按钮 */
.widget input[type=submit], .widget button { padding: 4px 10px; }
/* 手机端：日历格子仍留足点按面积，但比原 34px 更紧凑 */
@media (max-width: 760px) {
  .widget #tbCalendar td,
  .widget #tbCalendar td a { height: 19px; line-height: 19px; }
}

/* =========================================================
   v14 · 土味情话模块 + 顶部「网站导航」美化
   插件 TianAPI_Saylove 的免费 key 无接口权限，前台内容由
   script/saylove.js 的本地词库接管；下方只做视觉呈现。
   ========================================================= */
:root {
  --i-heart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 13.6C4.4 11.2 1.8 8.8 1.8 6.1c0-1.8 1.4-3.1 3.1-3.1 1.2 0 2.3.7 3.1 1.9.8-1.2 1.9-1.9 3.1-1.9 1.7 0 3.1 1.3 3.1 3.1 0 2.7-2.6 5.1-6.2 7.5z'/%3E%3C/svg%3E");
  --i-spark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linejoin='round'%3E%3Cpath d='M8 1.4 9.7 6.3 14.6 8 9.7 9.7 8 14.6 6.3 9.7 1.4 8 6.3 6.3z'/%3E%3Ccircle cx='8' cy='8' r='1.2' fill='%23000' stroke='none'/%3E%3C/svg%3E");
}
.widget-saylove { --ico-title: var(--i-heart); --ico-item: var(--i-spark); }
.saylove-card {
  position: relative; overflow: hidden;
  padding: 10px 12px 11px;
  border: 1px solid var(--border); border-radius: 11px;
  background: linear-gradient(125deg, var(--accent-soft), var(--accent-2soft));
}
.saylove-card::after {
  content: ""; position: absolute; right: -24px; top: -26px;
  width: 76px; height: 76px; border-radius: 50%;
  background: radial-gradient(circle, var(--accent-soft), transparent 68%);
  pointer-events: none;
}
.saylove-mark {
  position: absolute; left: 6px; top: -2px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 2.4rem; line-height: 1; color: var(--accent); opacity: .26;
}
.saylove-text {
  position: relative; z-index: 1; margin: 0 0 8px; padding-left: 17px;
  font-size: .88rem; line-height: 1.6; color: var(--text-bright);
  transition: opacity .14s;
}
.saylove-text.is-changing { opacity: 0; }
.widget .saylove-more {
  position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 5px;
  margin-left: 17px; padding: 3px 10px;
  font-family: var(--mono); font-size: .74rem; font-weight: 600;
  color: var(--accent); cursor: pointer;
  border: 1px solid rgba(14,165,183,.35); border-radius: 999px;
  background: var(--panel);
  transition: background .18s, color .18s, border-color .18s, transform .18s;
}
.saylove-more-ico {
  width: 10px; height: 10px;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-mask: var(--i-chevron) center / contain no-repeat;
  mask: var(--i-chevron) center / contain no-repeat;
}
.widget .saylove-more:hover {
  color: #fff; background: linear-gradient(135deg, var(--accent), var(--accent-2));
  border-color: transparent; transform: translateX(2px);
}
html[data-skin="dark"] .widget .saylove-more:hover { color: #06121c; }

/* ---- 顶栏 logo 后的网站导航：图标胶囊 + 悬停微动 ---- */
.nav { position: relative; gap: 4px; padding-left: 14px; }
.nav::before {
  content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  width: 1px; height: 22px;
  background: linear-gradient(180deg, transparent, var(--border-strong), transparent);
}
.nav-module { gap: 3px; }
.nav-module .navbar-item > a {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 11px; border-radius: 9px;
  font-family: var(--mono); font-size: .88rem; font-weight: 600;
  color: var(--text-dim); border: 1px solid transparent;
  transition: color .18s, background .18s, border-color .18s, transform .18s, box-shadow .18s;
}
.nav-module .navbar-item > a::before {
  content: ""; flex: none; width: 13px; height: 13px;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-mask: var(--nav-ico, var(--i-node)) center / contain no-repeat;
  mask: var(--nav-ico, var(--i-node)) center / contain no-repeat;
  opacity: .72; transition: opacity .18s, transform .18s;
}
.nav-home > a { --nav-ico: var(--i-grid); }
.nav-tech > a { --nav-ico: var(--i-chip); }
.nav-res > a { --nav-ico: var(--i-folder); }
.nav-make > a { --nav-ico: var(--i-diamond); }
.nav-life > a { --nav-ico: var(--i-star); }
.nav-msg > a { --nav-ico: var(--i-bubble); }
.nav-note > a { --nav-ico: var(--i-target); }
.nav-module .navbar-item > a:hover {
  color: var(--text-bright); background: var(--accent-soft);
  border-color: rgba(14,165,183,.30); transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(14,165,183,.12);
}
.nav-module .navbar-item > a:hover::before { opacity: 1; transform: scale(1.08); }
.nav-module .navbar-item.active > a,
.nav-module .navbar-item > a.active {
  color: var(--accent);
  background: linear-gradient(135deg, var(--accent-soft), var(--accent-2soft));
  border-color: rgba(14,165,183,.38);
}
html[data-skin="dark"] .nav-module .navbar-item > a::before { filter: brightness(1.25); }

/* 搜索框：放大镜图标 + 聚焦光晕 */
.nav-search input {
  padding-left: 34px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230e8a9c' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='6.9' cy='6.9' r='4.7'/%3E%3Cpath d='M10.4 10.4 14 14'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: 12px center; background-size: 14px 14px;
}
/* digi-dark.css 的 .nav-search input{background:...} 是简写，会重置
   background-repeat/position/size；这里必须一并重写，否则放大镜会平铺成一排 Q */
html[data-skin="dark"] .nav-search input {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2322d3ee' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='6.9' cy='6.9' r='4.7'/%3E%3Cpath d='M10.4 10.4 14 14'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: 12px center;
  background-size: 14px 14px;
}
@media (min-width: 761px) and (max-width: 1100px) {
  .header-inner { gap: 12px; }
  .nav-module .navbar-item > a { padding: 6px 8px; font-size: .82rem; gap: 4px; }
  .nav-module .navbar-item > a::before { width: 11px; height: 11px; }
  .nav-search input { width: 150px; }
}
@media (max-width: 760px) {
  /* v14 桌面规则 .nav{position:relative} 会盖掉基础手机规则，这里必须显式恢复 */
  .nav { position: absolute; padding-left: 0; }
  .nav::before { display: none; }
  .nav-module .navbar-item > a {
    display: flex; width: 100%; padding: 11px 14px;
    font-size: .92rem; border-radius: 10px;
  }
  .nav-module .navbar-item > a::before { width: 14px; height: 14px; }
  .nav-toggle-label { border-color: var(--border-strong); box-shadow: 0 0 0 3px var(--accent-soft); }
}

/* =========================================================
   v15 · 「关于我」模块（仿用户提供的旧版样式，改为主题数码风）
   内容由后台模块 aboutme 提供；头像为程序化 SVG，无外链图片。
   ========================================================= */
:root {
  --i-user: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='5.1' r='2.9'/%3E%3Cpath d='M2.4 14c.4-3 2.8-4.7 5.6-4.7s5.2 1.7 5.6 4.7'/%3E%3C/svg%3E");
}
.widget-aboutme { --ico-title: var(--i-user); --ico-item: var(--i-link); }
.aboutme-card {
  position: relative; overflow: hidden;
  padding: 9px 11px;
  border: 1px solid var(--border); border-radius: 11px;
  background: linear-gradient(125deg, var(--accent-soft), var(--accent-2soft));
}
.aboutme-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.aboutme-avatar {
  position: relative; flex: none; width: 36px; height: 36px;
  border: 1px solid var(--border); border-radius: 10px;
  background: linear-gradient(135deg, var(--accent-soft), var(--accent-2soft));
}
.aboutme-avatar::before {
  content: ""; position: absolute; inset: 6px;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-mask: var(--i-user) center / contain no-repeat;
  mask: var(--i-user) center / contain no-repeat;
}
.aboutme-name {
  font-family: var(--mono); font-weight: 700; font-size: .94rem;
  color: var(--text-bright);
}
.widget .aboutme-chip {
  margin-left: auto; padding: 2px 9px;
  font-family: var(--mono); font-size: .72rem; text-decoration: none;
  color: var(--accent); background: var(--accent-soft);
  border: 1px solid var(--border); border-radius: 999px;
  transition: color .18s, background .18s, border-color .18s;
}
.widget .aboutme-chip:hover {
  color: #fff; background: var(--accent); border-color: transparent;
}
html[data-skin="dark"] .widget .aboutme-chip:hover { color: #06121c; }
.aboutme-motto { margin: 0 0 4px; font-size: .86rem; line-height: 1.45; color: var(--text); }
.aboutme-row {
  margin: 2px 0; font-family: var(--mono); font-size: .78rem;
  line-height: 1.45; color: var(--text-dim);
}
.aboutme-key {
  display: inline-block; min-width: 40px; margin-right: 6px;
  color: var(--text-bright); font-weight: 700;
}
.aboutme-row a { color: var(--accent); text-decoration: none; word-break: break-all; }
.aboutme-row a:hover { text-decoration: underline; }
.aboutme-qq {
  display: inline-block; margin-left: 6px; padding: 1px 7px;
  border-radius: 5px; font-size: .72rem; color: #fff !important;
  background: linear-gradient(135deg, #12b7f5, #0a8dd8);
}
.aboutme-qq:hover { filter: brightness(1.1); text-decoration: none !important; }
