    /* ========== 设计变量 ========== */
    :root {
      --green: #1a7f37; --green-light: #dafbe1; --green-hover: #116329;
      --blue: #0969da; --blue-light: #ddf4ff;
      --gold: #bf8700; --gold-light: #fff8c5;
      --orange: #cf222e;
      --header-bg: #24292f; --header-text: #ffffffb3;
      --border: #d0d7de; --bg: #ffffff; --bg-secondary: #f6f8fa; --body-bg: #f6f8fa;
      --text: #1f2328; --text-light: #656d76; --text-link: #0969da;
      --radius: 6px; --shadow: 0 1px 0 rgba(27,31,36,0.04);
      --shadow-lg: 0 8px 24px rgba(140,149,159,0.2);
      --sidebar-width: 250px; --nav-height: 62px;
    }
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    body {
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", Helvetica, Arial, sans-serif;
      color: var(--text); background: var(--body-bg); font-size: 14px; line-height: 1.5;
      overflow-x: hidden; min-height: 100vh;
    }
    a { color: var(--text-link); text-decoration: none; }
    a:hover { text-decoration: underline; }
    button { font-family: inherit; cursor: pointer; }
    ::-webkit-scrollbar { width: 8px; }
    ::-webkit-scrollbar-track { background: transparent; }
    ::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 4px; }

    /* ========== 顶部导航 ========== */
    .gh-nav {
      background: var(--header-bg); color: #fff; padding: 0 16px;
      display: flex; align-items: center; gap: 8px; height: var(--nav-height);
      position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 0 rgba(27,31,36,0.06);
    }
    .gh-nav .nav-logo { color: #fff; text-decoration: none; flex-shrink: 0; }
    .gh-nav .nav-left { display: flex; align-items: center; gap: 4px; margin-right: auto; font-size: 16px; overflow: hidden; white-space: nowrap; }
    .gh-nav .nav-sep { color: var(--text-light); margin: 0 2px; }
    .gh-nav .nav-repo-name { color: #fff; font-weight: 600; cursor: pointer; max-width: 200px; overflow: hidden;text-overflow:ellipsis;}
    .gh-nav .nav-repo-name:hover { text-decoration: underline; }
    .gh-nav .nav-vis { font-size: 11px; padding: 1px 6px; border: 1px solid #57606a; border-radius: 12px; color: #8b949e; margin-left: 6px; vertical-align: middle; flex-shrink: 0; }
    .nav-home-btn { color: #fff; text-decoration: none; font-size: 13px; padding: 4px 10px; border-radius: 5px; margin-left: 12px; white-space: nowrap; transition: background 0.15s; }
    .nav-home-btn:hover { background: rgba(255,255,255,0.12); text-decoration: none; }
    .nav-forum-btn { color: #f0c040; text-decoration: none; font-size: 13px; padding: 4px 10px; border-radius: 5px; margin-left: 4px; white-space: nowrap; transition: background 0.15s; }
    .nav-forum-btn:hover { background: rgba(255,255,255,0.12); text-decoration: none; color: #ffd700; }
    .nav-map-btn { color: #ff9e80; text-decoration: none; font-size: 13px; padding: 4px 10px; border-radius: 5px; margin-left: 4px; white-space: nowrap; transition: background 0.15s; }
    .nav-map-btn:hover { background: rgba(255,255,255,0.12); text-decoration: none; color: #ffab91; }
    /* 右侧组 */
    .nav-right-group { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
    .nav-search-wrap-sm { position: relative; background: #2b3137; border: 1px solid #57606a; border-radius: 5px; padding: 3px 8px 3px 28px; transition: all 0.15s; }
    .nav-search-wrap-sm::before { content:"🔍"; position:absolute; left:7px; top:50%; transform:translateY(-50%); font-size:12px; color:#8b949e; pointer-events:none; }
    .nav-search-wrap-sm input { background:transparent; border:none; outline:none; color:#fff; font-size:13px; width:180px; font-family:inherit; }
    .nav-search-wrap-sm input::placeholder { color:#8b949e; }
    /* + 下拉 */
    .nav-plus-wrap { position:relative; }
    .nav-plus-btn { background:#238636; color:#fff; border:1px solid rgba(240,246,252,0.1); padding:4px 12px; border-radius:5px; font-size:13px; font-weight:500; cursor:pointer; }
    .nav-plus-btn:hover { background:#2ea043; }
    .nav-plus-menu { display:none; position:absolute; top:100%; right:0; margin-top:4px; background:#fff; border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow-lg); min-width:190px; z-index:300; padding:6px 0; }
    .nav-plus-menu.open { display:block; }
    .nav-plus-menu a { display:flex; align-items:center; gap:8px; padding:7px 14px; font-size:13px; color:var(--text); cursor:pointer; text-decoration:none; white-space:nowrap; }
    .nav-plus-menu a:hover { background:var(--bg-secondary); text-decoration:none; }
    /* 头像下拉 */
    .nav-avatar-wrap { position:relative; cursor:pointer; }
    /* 桥接间隙：防止鼠标从头像移到菜单时失去 hover */
    .nav-avatar-wrap::before { content:""; position:absolute; left:0; right:0; top:100%; height:12px; z-index:299; }
    .nav-avatar { width:24px; height:24px; border-radius:50%; border:1px solid #57606a; vertical-align:middle; }
    .nav-avatar-caret { font-size:10px; color:#8b949e; margin-left:-4px; vertical-align:middle; }
    .nav-avatar-menu { display:none; position:absolute; top:calc(100% + 10px); right:0; background:#fff; border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow-lg); min-width:200px; z-index:300; padding:8px 0; }
    .nav-avatar-wrap:hover > .nav-avatar-menu, .nav-avatar-menu:hover { display:block; }
    .avatar-menu-header { padding:8px 14px; border-bottom:1px solid var(--border); line-height:1.5; margin-bottom:4px; }
    .avatar-menu-header strong { display:block; color:#1f2328; font-size:14px; }
    .avatar-menu-header span { color:#656d76 !important; }
    .nav-avatar-menu a { display:block; padding:6px 14px; font-size:13px; color:#1f2328; text-decoration:none; }
    .nav-avatar-menu a:hover { background:var(--bg-secondary); text-decoration:none; }
    /* 内联登录区 */
    .nav-auth-inline { display:flex; gap:4px; align-items:center; }
    .nav-auth-inline input { width:140px; padding:4px 8px; font-size:11px; border-radius:4px; border:1px solid #57606a; background:#2b3137; color:#fff; }
    .nav-auth-inline .btn-login { padding:4px 10px; font-size:11px; border-radius:4px; border:1px solid #57606a; background:#2b3137; color:#fff; cursor:pointer; white-space:nowrap; }
    .nav-auth-inline .btn-login:hover { background:#3b424a; }
    @media (max-width: 900px) {
      .nav-right-group { flex-wrap:wrap; gap:6px; }
    }

    /* ========== 移动端汉堡菜单 ========== */
    .nav-hamburger { display: none; flex-direction: column; gap: 4px; background: none; border: none; cursor: pointer; padding: 6px; border-radius: 4px; }
    .nav-hamburger:hover { background: rgba(255,255,255,0.1); }
    .nav-hamburger span { display: block; width: 22px; height: 2px; background: #fff; border-radius: 1px; transition: transform 0.25s, opacity 0.25s; transform-origin: center; }
    .nav-hamburger.open span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
    .nav-hamburger.open span:nth-child(2) { opacity: 0; }
    .nav-hamburger.open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

    @media (max-width: 580px) {
      .nav-forum-btn { font-size: 0; }
      .nav-forum-btn::before { content: "💬"; font-size: 16px; }
      .nav-forum-btn[href*="templates"]::before { content: "📋"; }
      .nav-forum-btn[href*="discuss"]::before { content: "💬"; }
      .nav-map-btn { font-size: 0; }
      .nav-map-btn::before { content: "🍑"; font-size: 16px; }
    }
    @media (max-width: 768px) {
      .nav-hamburger { display: flex; }
      .nav-right-group {
        display: none;
        position: absolute; top: var(--nav-height); left: 0; right: 0;
        background: var(--header-bg); flex-direction: column;
        padding: 12px 16px; gap: 10px;
        border-top: 1px solid rgba(255,255,255,0.1);
        box-shadow: 0 6px 12px rgba(0,0,0,0.15);
        z-index: 99;
        transition: opacity 0.2s, transform 0.2s;
        opacity: 0; transform: translateY(-8px);
        pointer-events: none;
      }
      .nav-right-group.nav-open {
        display: flex;
        opacity: 1; transform: translateY(0);
        pointer-events: auto;
      }
      /* 窄屏下内联登录区横向排列折行 */
      .nav-auth-inline { width: 100%; justify-content: center; flex-wrap: wrap; }
      .nav-auth-inline input { flex: 1; min-width: 120px; }
      /* 搜索框占满宽 */
      .nav-search-wrap-sm { width: 100%; }
      .nav-plus-wrap { align-self: flex-start; }
    }

    /* ========== 桃李地图 ========== */
    .map-stats-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin-bottom: 20px; }
    .map-stat-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; text-align: center; }
    .map-stat-card .ms-num { font-size: 28px; font-weight: 700; color: var(--green); }
    .map-stat-card .ms-label { font-size: 12px; color: var(--text-light); margin-top: 4px; }
    .map-chart-section { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; margin-bottom: 16px; }
    .map-chart-section h3 { font-size: 15px; font-weight: 600; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
    /* 柱状条 */
    .map-bar-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
    .map-bar-label { width: 80px; font-size: 13px; text-align: right; color: var(--text); flex-shrink: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .map-bar-track { flex: 1; height: 22px; background: var(--bg-secondary); border-radius: 4px; overflow: hidden; position: relative; }
    .map-bar-fill { height: 100%; border-radius: 4px; background: linear-gradient(90deg, #2ea043, #238636); transition: width 0.6s ease; position: relative; }
    .map-bar-fill.math { background: linear-gradient(90deg, #3572A5, #296392); }
    .map-bar-fill.chinese { background: linear-gradient(90deg, #e34c26, #c0321a); }
    .map-bar-fill.english { background: linear-gradient(90deg, #d4a72c, #b8960a); }
    .map-bar-fill.science { background: linear-gradient(90deg, #563d7c, #3e2a5e); }
    .map-bar-num { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); font-size: 11px; color: #fff; font-weight: 600; }
    .map-bar-num-out { font-size: 12px; color: var(--text-light); flex-shrink: 0; width: 28px; text-align: right; }
    /* 学科×年级 矩阵 */
    .map-matrix { overflow-x: auto; }
    .map-matrix table { border-collapse: collapse; width: 100%; min-width: 500px; }
    .map-matrix th { font-size: 11px; padding: 6px 8px; background: var(--bg-secondary); color: var(--text-light); font-weight: 600; white-space: nowrap; position: sticky; top: 0; }
    .map-matrix th:first-child { text-align: left; min-width: 80px; }
    .map-matrix td { text-align: center; padding: 6px 4px; font-size: 12px; border: 1px solid #e8e8e8; }
    .map-matrix td:first-child { text-align: left; font-weight: 600; font-size: 13px; }
    .map-matrix .mm-cell { cursor: pointer; border-radius: 3px; transition: transform 0.15s; }
    .map-matrix .mm-cell:hover { transform: scale(1.15); }
    .mm-hot { background: #238636; color: #fff; font-weight: 600; }
    .mm-warm { background: #57ab5a; color: #fff; }
    .mm-cool { background: #bff0c1; color: #116329; }
    .mm-cold { background: #dafbe1; color: #116329; }
    /* 筛选切换 */
    .map-filter-bar { display: flex; gap: 8px; margin-bottom: 20px; flex-wrap: wrap; align-items: center; }
    .map-filter-bar .map-repo-tag { padding: 5px 14px; border-radius: 16px; font-size: 13px; border: 1px solid var(--border); background: #fff; cursor: pointer; transition: all 0.15s; }
    .map-filter-bar .map-repo-tag:hover { background: var(--bg-secondary); }
    .map-filter-bar .map-repo-tag.active { background: var(--green); color: #fff; border-color: var(--green); }
    /* 移动端适配 */
    @media (max-width: 640px) {
      .map-bar-label { width: 56px; font-size: 12px; }
      .map-matrix th, .map-matrix td { font-size: 10px; padding: 4px 2px; }
      .map-chart-section { padding: 14px; }
    }
    /* 地理分布地图 */
    .geo-map-container { margin-top: 20px; padding: 0; }
    .geo-map-container h3 { margin-bottom: 12px; }
    #geoMap { width: 100%; height: 420px; border-radius: var(--radius); border: 1px solid var(--border); z-index: 0; }
    .geo-map-legend { display: flex; gap: 20px; justify-content: center; padding: 10px 0 0; font-size: 13px; }
    .geo-map-legend span { display: flex; align-items: center; gap: 6px; }
    .geo-legend-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
    @media (max-width: 640px) {
      #geoMap { height: 300px; }
    }

    /* ========== 模板库 ========== */
    .tpl-hero { text-align: center; padding: 32px 16px 20px; }
    .tpl-hero h1 { font-size: 28px; font-weight: 700; }
    .tpl-hero p { color: var(--text-light); font-size: 14px; margin-top: 6px; }
    .tpl-filter-row { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin-bottom: 24px; }
    .tpl-filter-tag { padding: 5px 14px; border-radius: 16px; font-size: 13px; border: 1px solid var(--border); background: #fff; cursor: pointer; transition: all 0.15s; }
    .tpl-filter-tag:hover { background: var(--bg-secondary); }
    .tpl-filter-tag.active { background: var(--blue); color: #fff; border-color: var(--blue); }
    .tpl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; max-width: 1100px; margin: 0 auto; padding: 0 16px 40px; }
    .tpl-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; cursor: pointer; transition: box-shadow 0.2s, transform 0.15s; display: flex; flex-direction: column; gap: 12px; }
    .tpl-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); border-color: var(--blue); }
    .tpl-card-header { display: flex; align-items: flex-start; gap: 12px; }
    .tpl-card-icon { font-size: 36px; line-height: 1; flex-shrink: 0; }
    .tpl-card-body { flex: 1; }
    .tpl-card-body h3 { font-size: 16px; font-weight: 600; margin-bottom: 4px; }
    .tpl-card-body p { font-size: 13px; color: var(--text-light); line-height: 1.5; }
    .tpl-card-tags { display: flex; gap: 4px; flex-wrap: wrap; }
    .tpl-card-tag { font-size: 11px; padding: 2px 8px; border-radius: 10px; background: var(--bg-secondary); color: var(--text-light); }
    .tpl-card-footer { display: flex; align-items: center; justify-content: space-between; padding-top: 8px; border-top: 1px solid #f0f0f0; }
    .tpl-card-footer .btn { font-size: 12px; padding: 5px 14px; }
    .tpl-card-meta { font-size: 11px; color: var(--text-light); }
    @media (max-width: 640px) {
      .tpl-grid { grid-template-columns: 1fr; }
    }

    /* ========== 研讨广场 ========== */
    .discuss-hero { text-align: center; padding: 32px 16px 8px; }
    .discuss-hero h1 { font-size: 28px; font-weight: 700; }
    .discuss-hero p { color: var(--text-light); font-size: 14px; margin-top: 6px; }
    .discuss-bar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; justify-content: center; margin-bottom: 20px; padding: 0 16px; }
    .discuss-tab { padding: 5px 16px; border-radius: 16px; font-size: 13px; border: 1px solid var(--border); background: #fff; cursor: pointer; transition: all 0.15s; }
    .discuss-tab:hover { background: var(--bg-secondary); }
    .discuss-tab.active { background: var(--blue); color: #fff; border-color: var(--blue); }
    .discuss-tab .tab-badge { font-size: 11px; margin-left: 4px; opacity: 0.8; }
    .discuss-search-wrap { position: relative; flex: 1; min-width: 200px; max-width: 360px; }
    .discuss-search-wrap input { width: 100%; padding: 6px 12px 6px 32px; border: 1px solid var(--border); border-radius: 18px; font-size: 13px; outline: none; }
    .discuss-search-wrap input:focus { border-color: var(--blue); box-shadow: 0 0 0 3px #ddf4ff; }
    .discuss-search-wrap::before { content: "🔍"; position: absolute; left: 10px; top: 50%; transform: translateY(-50%); font-size: 13px; pointer-events: none; }
    .discuss-list { max-width: 900px; margin: 0 auto; padding: 0 16px 40px; }
    .discuss-item { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border-bottom: 1px solid #f0f0f0; cursor: pointer; transition: background 0.15s; }
    .discuss-item:hover { background: var(--bg-secondary); }
    .discuss-item-icon { font-size: 20px; flex-shrink: 0; width: 28px; text-align: center; }
    .discuss-item-body { flex: 1; min-width: 0; }
    .discuss-item-title { font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: 4px; }
    .discuss-item-title:hover { color: var(--text-link); }
    .discuss-item-meta { font-size: 12px; color: var(--text-light); display: flex; gap: 10px; flex-wrap: wrap; }
    .discuss-item-labels { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 2px; }
    .discuss-item-label { font-size: 10px; padding: 1px 7px; border-radius: 10px; font-weight: 500; }
    .discuss-item-comments { display: flex; align-items: center; gap: 3px; font-size: 12px; color: var(--text-light); flex-shrink: 0; }
    .discuss-empty { text-align: center; padding: 40px; color: var(--text-light); }
    .discuss-new-btn { padding: 6px 14px; border-radius: 16px; font-size: 13px; background: var(--green); color: #fff; border: none; cursor: pointer; white-space: nowrap; }
    .discuss-new-btn:hover { background: var(--green-hover); }
    .discuss-loading { text-align: center; padding: 32px; }
    @media (max-width: 580px) {
      .discuss-bar { flex-direction: column; }
      .discuss-search-wrap { max-width: 100%; }
    }

    /* ========== 声望系统 ========== */
    .rep-card { background: linear-gradient(135deg, #f6ffed 0%, #e6f7ff 100%); border: 2px solid var(--green); border-radius: var(--radius); padding: 20px; margin-bottom: 16px; }
    .rep-header { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
    .rep-badge { width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 28px; flex-shrink: 0; }
    .rep-badge.lv1 { background: #e8f5e9; border: 2px solid #a5d6a7; }
    .rep-badge.lv2 { background: #c8e6c9; border: 2px solid #66bb6a; }
    .rep-badge.lv3 { background: #a5d6a7; border: 2px solid #43a047; }
    .rep-badge.lv4 { background: #81c784; border: 2px solid #2e7d32; color: #fff; }
    .rep-badge.lv5 { background: #66bb6a; border: 2px solid #1b5e20; color: #fff; }
    .rep-badge.lv6 { background: #4caf50; border: 2px solid #ff9800; color: #fff; }
    .rep-badge.lv7 { background: #43a047; border: 2px solid #ff9800; color: #fff; }
    .rep-badge.lv8 { background: #388e3c; border: 2px solid #ff5722; color: #fff; }
    .rep-badge.lv9 { background: #2e7d32; border: 2px solid #ffc107; color: #fff; }
    .rep-badge.lv10 { background: #1b5e20; border: 2px solid #ffd54f; color: #ffd54f; }
    .rep-badge.lv11 { background: #0d47a1; border: 2px solid #64b5f6; color: #64b5f6; }
    .rep-badge.lv12 { background: #4a148c; border: 2px solid #ce93d8; color: #ce93d8; }
    .rep-info { flex: 1; min-width: 150px; }
    .rep-info h3 { font-size: 18px; margin-bottom: 2px; }
    .rep-info .rep-title { font-size: 14px; color: #2e7d32; font-weight: 600; margin-bottom: 8px; }
    .rep-progress-bar { width: 100%; height: 10px; background: #e0e0e0; border-radius: 5px; overflow: hidden; margin-bottom: 4px; }
    .rep-progress-fill { height: 100%; background: linear-gradient(90deg, #66bb6a, #43a047); border-radius: 5px; transition: width 0.6s ease; }
    .rep-progress-text { font-size: 11px; color: var(--text-light); display: flex; justify-content: space-between; }
    .rep-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 12px; margin-top: 16px; padding-top: 16px; border-top: 1px solid #c8e6c9; }
    .rep-stat { text-align: center; }
    .rep-stat-num { font-size: 22px; font-weight: 700; color: var(--green); }
    .rep-stat-label { font-size: 11px; color: var(--text-light); margin-top: 2px; }
    .rep-history { margin-top: 16px; }
    .rep-history h4 { font-size: 13px; font-weight: 600; color: var(--text-light); margin-bottom: 12px; }
    /* 时间线 */
    .rep-timeline { position: relative; padding-left: 28px; }
    .rep-timeline::before { content: ""; position: absolute; left: 11px; top: 4px; bottom: 4px; width: 2px; background: #c8e6c9; border-radius: 1px; }
    .rep-tl-item { position: relative; margin-bottom: 14px; padding-bottom: 2px; }
    .rep-tl-item:last-child { margin-bottom: 0; }
    .rep-tl-dot { position: absolute; left: -22px; top: 3px; width: 18px; height: 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; z-index: 1; }
    .rep-tl-dot.milestone { background: #ffc107; border: 2px solid #fff; box-shadow: 0 0 0 2px #ffc107; }
    .rep-tl-dot.pr { background: #238636; border: 2px solid #fff; box-shadow: 0 0 0 2px #23863640; }
    .rep-tl-dot.comment { background: #0969da; border: 2px solid #fff; box-shadow: 0 0 0 2px #0969da40; }
    .rep-tl-dot.levelup { background: #f0c040; border: 2px solid #fff; box-shadow: 0 0 0 2px #f0c040; }
    .rep-tl-date { font-size: 11px; color: var(--text-light); margin-bottom: 2px; }
    .rep-tl-desc { font-size: 13px; color: var(--text); }
    .rep-tl-desc a { color: var(--text-link); }
    .rep-tl-rep { font-size: 12px; font-weight: 600; color: var(--green); margin-top: 1px; }
    .rep-tl-rep.negative { color: var(--orange); }
    .rep-history-summary { font-size: 12px; color: var(--text-light); padding: 8px 0; text-align: center; }
    .rep-history-empty { font-size: 14px; color: var(--text-light); text-align: center; padding: 20px; }
    .rep-history-empty p { margin-bottom: 8px; }

    /* ========== 整体布局 ========== */
    .app-layout { display: flex; height: calc(100vh - var(--nav-height)); }

    /* ========== 主内容区 ========== */
    .main-content { flex: 1; overflow-y: auto; overflow-x: hidden; background: #fff; }
    .main-content .view { display: none; min-height: 100%; }
    .main-content .view.active { display: block; }

    /* ========== 按钮 ========== */
    .btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 16px; font-size: 13px; font-weight: 500; border-radius: var(--radius); border: 1px solid var(--border); background: #fff; color: var(--text); transition: all 0.15s; text-decoration: none; }
    .btn:hover { border-color: var(--green); color: var(--green); }
.btn-pri { background: var(--green); color: #fff; border-color: var(--green); }
.btn-pri:hover { background: var(--green-hover); color: #fff; }
.btn-pri:disabled, .btn:disabled { background: #c0c4cc; color: #909399; border-color: #dcdfe6; cursor: not-allowed; opacity: 0.7; }
.btn-gold { background: var(--gold); color: #fff; border-color: var(--gold); }
    .btn-sm { padding: 4px 10px; font-size: 11px; }

    /* ========== 卡片 ========== */
    .card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
    .card-hd { padding: 10px 16px; font-size: 14px; font-weight: 600; background: var(--bg-secondary); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 8px; }
    .card-bd { padding: 12px 16px; }

    /* ========== 视图：教案列表 ========== */
    .view-list-header { padding: 24px 32px 0; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
    .view-list-header h2 { font-size: 22px; font-weight: 700; display: flex; align-items: center; gap: 10px; }
    .view-list-header .breadcrumb { font-size: 13px; color: var(--text-light); }
    .view-list-header .breadcrumb a { color: var(--text-link); }
    .view-list-toolbar { padding: 16px 32px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; border-bottom: 1px solid var(--border); }
    .view-list-toolbar .search-box { flex: 1; min-width: 200px; max-width: 360px; position: relative; }
    .view-list-toolbar .search-box input { width: 100%; padding: 7px 12px 7px 32px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px; font-family: inherit; }
    .view-list-toolbar .search-box input:focus { outline: 2px solid var(--text-link); outline-offset: -1px; }
    .view-list-toolbar .search-box .search-icon { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); font-size: 14px; color: var(--text-light); pointer-events: none; }
    .sort-btn { display: inline-flex; align-items: center; gap: 4px; padding: 6px 12px; font-size: 12px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; color: var(--text); transition: background 0.1s; }
    .sort-btn:hover { background: var(--bg-secondary); }
    .sort-btn.active { background: var(--green-light); border-color: var(--green); color: var(--green); }

    /* 教案卡片网格 */
    .lesson-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; padding: 24px 32px; }
    .lc { border: 1px solid var(--border); border-radius: var(--radius); padding: 20px; cursor: pointer; transition: box-shadow 0.15s, transform 0.15s; display: flex; flex-direction: column; gap: 10px; background: #fff; }
    .lc:hover { box-shadow: var(--shadow); transform: translateY(-2px); border-color: var(--green); }
    .lc .lc-subject { font-size: 11px; color: var(--gold); font-weight: 600; text-transform: uppercase; letter-spacing: 1px; }
    .lc .lc-title { font-size: 15px; font-weight: 600; color: var(--text-link); line-height: 1.4; }
    .lc .lc-meta { font-size: 12px; color: var(--text-light); display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
    .lc .lc-meta span { display: inline-flex; align-items: center; gap: 3px; }
    /* 搜索高亮 */
    mark { background: #fff3b0; color: inherit; border-radius: 2px; padding: 0 1px; }
    /* 收藏按钮 */
    .lc-fav { position: absolute; top: 12px; right: 12px; width: 32px; height: 32px; border: none; background: none; cursor: pointer; font-size: 20px; line-height: 1; border-radius: 50%; transition: background 0.15s, transform 0.2s; z-index: 2; display: flex; align-items: center; justify-content: center; }
    .lc-fav:hover { background: #fff1f0; }
    .lc-fav.faved { color: #cf222e; animation: heartPop 0.3s ease; }
    .lc-fav:not(.faved) { color: #d0d7de; }
    @keyframes heartPop { 0% { transform: scale(1); } 50% { transform: scale(1.3); } 100% { transform: scale(1); } }
    .lc { position: relative; }

    /* ========== 视图：教案详情 ========== */
    .view-lesson-top { padding: 16px 32px; border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: var(--bg-secondary); }
    .view-lesson-top .back-btn { display: inline-flex; align-items: center; gap: 4px; padding: 5px 10px; font-size: 12px; color: var(--text-link); border: none; background: none; cursor: pointer; border-radius: var(--radius); }
    .view-lesson-top .back-btn:hover { background: #e8eaed; }
    .view-lesson-top .file-path { font-size: 12px; color: var(--text-light); font-family: monospace; }
    .view-lesson-top .lesson-actions { margin-left: auto; display: flex; gap: 8px; }
    .lesson-body-wrap { display: grid; grid-template-columns: 1fr 280px; gap: 0; min-height: calc(100vh - var(--nav-height) - 100px); }
    @media (max-width: 900px) { .lesson-body-wrap { grid-template-columns: 1fr; } }
    .lesson-content { padding: 32px 40px; overflow-y: auto; }
    .lesson-content h1 { font-size: 28px; margin-bottom: 16px; border-bottom: 1px solid var(--border); padding-bottom: 12px; }
    .lesson-content h2 { font-size: 20px; margin-top: 24px; margin-bottom: 12px; padding-bottom: 6px; border-bottom: 1px solid #eee; }
    .lesson-content h3 { font-size: 16px; margin-top: 16px; margin-bottom: 8px; }
    .lesson-content p { margin-bottom: 10px; line-height: 1.8; }
    .lesson-content ul, .lesson-content ol { margin-bottom: 10px; padding-left: 24px; }
    .lesson-content li { margin-bottom: 4px; line-height: 1.7; }
    .lesson-content table { width: 100%; border-collapse: collapse; margin-bottom: 16px; }
    .lesson-content table th, .lesson-content table td { border: 1px solid var(--border); padding: 8px 12px; font-size: 13px; }
    .lesson-content table th { background: var(--bg-secondary); font-weight: 600; }
    .lesson-content blockquote { border-left: 4px solid var(--gold); padding: 8px 16px; margin-bottom: 10px; background: var(--gold-light); color: var(--text); }
    .lesson-content code { background: #f6f8fa; padding: 2px 6px; border-radius: 3px; font-size: 0.9em; }
    .lesson-content pre { background: #f6f8fa; padding: 16px; border-radius: var(--radius); overflow-x: auto; margin-bottom: 16px; }
    .lesson-content pre code { padding: 0; background: none; }
    .lesson-sidebar { border-left: 1px solid var(--border); padding: 24px; background: var(--bg-secondary); display: flex; flex-direction: column; gap: 16px; }
    @media (max-width: 900px) { .lesson-sidebar { border-left: none; border-top: 1px solid var(--border); } }
    .lesson-sidebar .meta-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; }
    .lesson-sidebar .meta-card h4 { font-size: 12px; font-weight: 600; color: var(--text-light); margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.5px; }
    .lesson-sidebar .meta-row { display: flex; align-items: center; gap: 8px; font-size: 13px; margin-bottom: 6px; }
    .lesson-sidebar .meta-row img { width: 20px; height: 20px; border-radius: 50%; }
    .lesson-sidebar .btn-row { display: flex; flex-direction: column; gap: 8px; }

    /* ========== 打印样式（PDF 导出） ========== */
    @media print {
      /* 隐藏所有非内容元素 */
      .gh-nav, .nav-hamburger, .home-actions, .badge-strip,
      .view-lesson-top, .lesson-sidebar, .lesson-actions,
      .modal-overlay, .app-layout > *:not(.main-content),
      .dash-tabs, .dash-header, .repo-tabs, .repo-sidebar,
      .lesson-body-wrap > *:not(.lesson-content),
      button, .btn, .nav-plus-wrap, .nav-avatar-wrap,
      .nav-auth-inline, .nav-search-wrap-sm, #tplFilterRow,
      .map-filter-bar, .tpl-hero p, .home-hero, .guide-cards,
      .home-section, footer, script, style, .src-tabs, .sort-row,
      .search-bar, .list-header, .list-toolbar, #listBreadcrumb,
      .rep-history-empty p:last-child, .rep-history-summary {
        display: none !important;
      }
      /* 确保页面容器可见 */
      body { background: #fff !important; font-size: 13px; line-height: 1.7; }
      .app-layout { display: block !important; height: auto !important; }
      .main-content { padding: 0 !important; overflow: visible !important; }
      .view { display: none !important; }
      .view.active { display: block !important; }
      /* 教案正文 */
      .lesson-content { padding: 20px 0 !important; max-width: 100% !important; overflow: visible !important; }
      .lesson-body-wrap { display: block !important; }
      .lesson-content h1 { font-size: 24px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 2px solid #000; }
      .lesson-content h2 { font-size: 18px; margin-top: 18px; break-after: avoid; }
      .lesson-content h3 { font-size: 15px; break-after: avoid; }
      .lesson-content p, .lesson-content li { orphans: 3; widows: 3; }
      .lesson-content table { break-inside: avoid; }
      .lesson-content pre, .lesson-content blockquote { break-inside: avoid; }
      .lesson-content img { max-width: 100% !important; break-inside: avoid; }
      .lesson-content a { color: #000; text-decoration: underline; }
      .lesson-content a::after { content: " (" attr(href) ")"; font-size: 10px; color: #666; }
      /* 打印页眉（自动标题） */
      .lesson-content::before {
        content: "智慧宫 HOW — 共笔一堂，桃李天下";
        display: block; font-size: 11px; color: #999;
        border-bottom: 1px solid #ccc; padding-bottom: 6px; margin-bottom: 20px;
        text-align: center;
      }
      /* 打印页脚 */
      @page {
        size: A4;
        margin: 15mm 15mm 20mm 15mm;
        @bottom-center {
          content: "— 智慧宫 HOW · 教育开源协作平台 —";
          font-size: 9px; color: #999;
        }
      }
      @page :first {
        @bottom-center { content: ""; }
      }
      /* 模板库/地图打印 */
      .tpl-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 12px !important; }
      .tpl-card { break-inside: avoid; border: 1px solid #ddd !important; box-shadow: none !important; }
      .tpl-card .btn { display: none !important; }
      .map-chart-section { break-inside: avoid; border: 1px solid #ddd !important; }
      .map-stats-row { grid-template-columns: repeat(4, 1fr) !important; }
      .map-filter-bar { display: none !important; }
      .map-bar-fill { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    }

    /* ========== 视图：个人仪表盘 ========== */
    .dash-header { padding: 32px 32px 24px; border-bottom: 1px solid var(--border); }
    .dash-header .dh-user { display: flex; align-items: center; gap: 16px; }
    .dash-header .dh-user img { width: 64px; height: 64px; border-radius: 50%; border: 3px solid var(--green); }
    .dash-header .dh-info h2 { font-size: 24px; font-weight: 700; }
    .dash-header .dh-info { position: relative; }
    .dash-header .dh-info .dh-meta { font-size: 13px; color: var(--text-light); margin-top: 2px; }
    .dash-update-hint { font-size: 11px; color: var(--text-light); margin-left: 8px; font-weight: 400; }
    .dh-notif-badge { font-size: 13px; margin-left: 10px; padding: 2px 10px; background: var(--orange); color: #fff; border-radius: 12px; font-weight: 600; cursor: pointer; transition: opacity 0.2s; }
    .dh-notif-badge:hover { opacity: 0.85; }
    .dh-notif-badge.no-unread { background: #8b949e; }
    /* 通知下拉面板 */
    .dh-notif-panel { position: absolute; top: 100%; left: 0; margin-top: 8px; width: 420px; max-height: 480px; overflow-y: auto;
      background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-lg); z-index: 100; }
    /* 通知面板标签切换 */
    .dh-notif-tabs { display: flex; border-bottom: 1px solid var(--border); position: sticky; top: 0; background: var(--bg); z-index: 1; }
    .dh-notif-tab { flex: 1; text-align: center; padding: 10px 0; font-size: 13px; cursor: pointer; color: var(--text-light); border-bottom: 2px solid transparent; transition: all 0.15s; }
    .dh-notif-tab:hover { color: var(--text); }
    .dh-notif-tab.active { color: var(--text); font-weight: 600; border-bottom-color: var(--pri, #0969da); }
    .dh-notif-tab b { color: var(--orange); font-weight: 700; }
    .dh-notif-item { display: flex; align-items: flex-start; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--border);
      color: var(--text); text-decoration: none; transition: background 0.15s; }
    .dh-notif-item:last-child { border-bottom: none; }
    .dh-notif-item:hover { background: var(--bg-secondary); }
    .dh-notif-item.unread { background: #ddf4ff; }
    .dh-notif-item.unread:hover { background: #c5e7f7; }
    .dh-notif-icon { font-size: 18px; flex-shrink: 0; margin-top: 2px; }
    .dh-msg-avatar { width: 20px; height: 20px; border-radius: 50%; flex-shrink: 0; margin-top: 2px; }
    .dh-notif-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; cursor: pointer; }
    .dh-notif-title { font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .dh-notif-meta { font-size: 11px; color: var(--text-light); }
    .dh-notif-expand { margin-left: 4px; font-size: 10px; color: var(--text-light); transition: transform 0.2s; }
    .dh-notif-link { flex-shrink: 0; color: var(--text-light); font-size: 13px; text-decoration: none; padding: 2px 4px; opacity: 0; transition: opacity 0.15s; }
    .dh-notif-item:hover .dh-notif-link { opacity: 1; }
    /* 通知详情展开 */
    .dh-notif-detail { margin-top: 6px; padding: 8px 10px; background: var(--bg-secondary); border-radius: 4px; font-size: 12px; }
    .dh-notif-detail.loading { color: var(--text-light); }
    .dh-notif-detail-inner { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
    .dh-nd-actor { display: inline-flex; align-items: center; gap: 4px; font-weight: 600; }
    .dh-nd-repo { color: var(--text-link); text-decoration: none; }
    .dh-nd-assigner { color: var(--text-light); }
    .dh-nd-time { color: var(--text-light); font-size: 11px; }
    .dh-notif-footer { padding: 8px 14px; text-align: center; font-size: 12px; border-top: 1px solid var(--border); background: var(--bg-secondary); }
    .dh-notif-footer a { color: var(--text-link); text-decoration: none; }
    .dh-notif-empty { padding: 24px; text-align: center; color: var(--text-light); font-size: 13px; }
    /* 发送私信表单 */
    .dh-msg-form { padding: 10px 14px; border-top: 1px solid var(--border); background: var(--bg-secondary); }
    .dh-msg-form input, .dh-msg-form textarea { font-family: inherit; box-sizing: border-box; }
    .dh-msg-form input:focus, .dh-msg-form textarea:focus { outline: none; border-color: var(--pri, #0969da) !important; }
    .dash-header.refreshing { opacity: 0.7; transition: opacity 0.2s; }
    /* 仓库热度条 */
    .dh-repo-stats { display: flex; gap: 14px; margin-top: 8px; font-size: 13px; color: var(--text-light); }
    .dh-repo-stats span { display: flex; align-items: center; gap: 3px; }
    /* 贡献榜 */
    .contrib-section { display: flex; flex-direction: column; gap: 24px; }
    .contrib-sub h3 { font-size: 14px; font-weight: 600; margin-bottom: 12px; }
    .contrib-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); }
    .contrib-rank { width: 28px; font-size: 14px; font-weight: 700; text-align: center; color: var(--text-light); flex-shrink: 0; }
    .contrib-avatar { width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0; }
    .contrib-info { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; }
    .contrib-name { font-size: 14px; font-weight: 600; color: var(--text); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .contrib-name:hover { color: var(--pri); }
    .contrib-count { font-size: 12px; color: var(--text-light); white-space: nowrap; }
    .contrib-bar-wrap { flex: 0 0 80px; height: 6px; background: var(--bg-secondary); border-radius: 3px; overflow: hidden; }
    .contrib-bar { height: 100%; background: var(--green); border-radius: 3px; transition: width 0.5s ease; }
    /* Star 用户头像墙 */
    .star-avatars { display: flex; flex-wrap: wrap; gap: 6px; }
    .star-avatar { width: 36px; height: 36px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.1); transition: transform 0.15s; }
    .star-avatar:hover { transform: scale(1.15); }
    .dash-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border); padding: 0 32px; }
    .dash-tab { padding: 10px 16px; font-size: 14px; color: var(--text-light); border-bottom: 2px solid transparent; cursor: pointer; transition: border-color 0.15s, color 0.15s; background: none; border-top: none; border-left: none; border-right: none; display: flex; align-items: center; gap: 6px; white-space: nowrap; }
    .dash-tab:hover { border-bottom-color: #d0d7de; color: var(--text); }
    .dash-tab.active { color: var(--text); font-weight: 600; border-bottom-color: #fd8c73; }
    .dash-tab .tab-count { background: #afb8c133; border-radius: 10px; padding: 0 6px; font-size: 12px; }
    .dash-tab-body { padding: 24px 32px; display: none; }
    .dash-tab-body.active { display: block; }
    .rep-subtabs { display: flex; gap: 4px; margin-bottom: 16px; border-bottom: 1px solid var(--border); padding-bottom: 0; }
    .rep-subtab { padding: 8px 14px; font-size: 13px; color: var(--text-light); border: none; border-bottom: 2px solid transparent; cursor: pointer; background: none; transition: border-color 0.15s, color 0.15s; }
    .rep-subtab:hover { color: var(--text); }
    .rep-subtab.active { color: var(--text); font-weight: 600; border-bottom-color: var(--green); }
    .rep-sub-panel { display: none; }
    .rep-sub-panel.active { display: block; }
    .pr-item { border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; margin-bottom: 12px; display: flex; align-items: flex-start; gap: 12px; }
    .pr-item .pr-icon { font-size: 18px; flex-shrink: 0; margin-top: 2px; }
    .pr-item .pr-info { flex: 1; }
    .pr-item .pr-info .pr-title { font-size: 14px; font-weight: 600; }
    .pr-item .pr-info .pr-meta { font-size: 12px; color: var(--text-light); margin-top: 4px; display: flex; gap: 12px; }
    .pr-item .pr-badge { font-size: 11px; padding: 2px 8px; border-radius: 10px; font-weight: 500; }
    .pr-badge-merged { background: #dcffe4; color: #1a5c22; }
    .pr-badge-open { background: #ddf4ff; color: #0969da; }
    .pr-badge-closed { background: var(--bg-secondary); color: var(--text-light); }
    .calendar-grid { display: flex; gap: 3px; overflow-x: auto; padding: 8px 0; }
    .calendar-week { display: flex; flex-direction: column; gap: 3px; }
    .cal-cell { width: 11px; height: 11px; border-radius: 2px; background: #ebedf0; outline: 1px solid rgba(27,31,35,0.06); }
    .cal-cell[data-lv="1"] { background: #9be9a8; }
    .cal-cell[data-lv="2"] { background: #40c463; }
    .cal-cell[data-lv="3"] { background: #30a14e; }
    .cal-cell[data-lv="4"] { background: #216e39; }
    .cal-legend { display: flex; align-items: center; gap: 3px; font-size: 11px; color: var(--text-light); margin-top: 8px; justify-content: flex-end; }
    .repo-item { border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; margin-bottom: 10px; }
    .repo-item .repo-name { font-size: 14px; font-weight: 600; color: var(--text-link); }
    .repo-item .repo-desc { font-size: 12px; color: var(--text-light); margin-top: 4px; }
    .repo-item .repo-meta { font-size: 11px; color: var(--text-light); margin-top: 6px; display: flex; gap: 12px; align-items: center; }
    .repo-item .repo-lang-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--gold); }

    /* ========== 视图：献课指南 ========== */
    .contrib-body { padding: 48px 40px; max-width: 900px; }
    .contrib-body h2 { font-size: 22px; font-weight: 700; margin: 36px 0 16px; display: flex; align-items: center; gap: 8px; }
    .contrib-body h2:first-child { margin-top: 0; }
    .step-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin: 24px 0; }
    @media (max-width: 768px) { .step-cards { grid-template-columns: 1fr; } .contrib-body { padding: 24px 20px; } .lesson-content { padding: 24px 20px; } }
    .step-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 28px 24px; text-align: center; transition: box-shadow 0.15s; }
    .step-card:hover { box-shadow: var(--shadow); }
    .step-card .sc-num { width: 48px; height: 48px; border-radius: 50%; background: var(--green); color: #fff; font-size: 22px; font-weight: 700; display: flex; align-items: center; justify-content: center; margin: 0 auto 16px; }
    .step-card h3 { font-size: 18px; margin-bottom: 10px; }
    .step-card p { font-size: 14px; color: var(--text-light); line-height: 1.7; }
    .faq-item { margin-bottom: 20px; }
    .faq-item .faq-q { font-weight: 600; font-size: 15px; margin-bottom: 6px; }
    .faq-item .faq-a { color: var(--text-light); font-size: 14px; line-height: 1.7; }

    /* ========== 视图：编写教案 ========== */
    .write-body { padding: 32px 40px; max-width: 1100px; margin: 0 auto; }
    @media (max-width: 768px) { .write-body { padding: 20px; } }
    .write-body h2 { font-size: 20px; font-weight: 700; margin-bottom: 20px; }
    .write-body .step-indicator { display: flex; gap: 8px; margin-bottom: 28px; align-items: center; }
    .write-body .step-dot { width: 28px; height: 28px; border-radius: 50%; background: var(--border); color: var(--text-light); display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; }
    .write-body .step-dot.done { background: var(--green); color: #fff; }
    .write-body .step-dot.current { background: var(--green); color: #fff; box-shadow: 0 0 0 3px var(--green-light); }
    .write-body .step-line { flex: 1; height: 2px; background: var(--border); max-width: 60px; }
    .write-body .step-line.done { background: var(--green); }
    .write-body .step-label { font-size: 11px; color: var(--text-light); text-align: center; min-width: 55px; }
    .write-body .repo-list { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; margin-bottom: 16px; }
    .write-body .repo-row { display: flex; align-items: center; padding: 12px 16px; cursor: pointer; gap: 10px; border-bottom: 1px solid var(--border); transition: background 0.1s; }
    .write-body .repo-row:last-child { border-bottom: none; }
    .write-body .repo-row:hover { background: var(--bg-secondary); }
    .write-body .repo-row.selected { background: var(--green-light); border-left: 3px solid var(--green); }
    .write-body .repo-row .repo-icon { font-size: 16px; flex-shrink: 0; }
    .write-body .repo-row .repo-info { flex: 1; min-width: 0; }
    .write-body .repo-row .repo-name { font-size: 14px; font-weight: 600; color: var(--text-link); }
    .write-body .repo-row .repo-desc { font-size: 12px; color: var(--text-light); }
    .write-body .repo-row .repo-select { font-size: 11px; color: var(--green); font-weight: 600; display: none; }
    .write-body .repo-row.selected .repo-select { display: block; }
    /* 文件上传区 */
    .upload-zone { border: 2px dashed var(--border); border-radius: var(--radius); padding: 32px; text-align: center; cursor: pointer; transition: border-color 0.2s, background 0.2s; background: var(--bg-secondary); }
    .upload-zone:hover, .upload-zone.drag-over { border-color: var(--green); background: var(--green-light); }
    .upload-zone-inner { pointer-events: none; }
    .upload-icon { font-size: 40px; margin-bottom: 8px; }
    .upload-text { font-size: 14px; color: var(--text); font-weight: 500; margin-bottom: 4px; }
    .upload-hint { font-size: 12px; color: var(--text-light); }
    .upload-selected { border-color: var(--green); border-style: solid; background: #f0f9f0; }
    /* 多文件列表 */
    .file-mini-list { margin-top: 10px; max-height: 180px; overflow-y: auto; }
    .file-mini-row { display: flex; align-items: center; gap: 8px; padding: 6px 10px; font-size: 13px; border-bottom: 1px solid var(--border); }
    .file-mini-row:last-child { border-bottom: none; }
    .file-mini-row .fm-icon { font-size: 16px; flex-shrink: 0; }
    .file-mini-row .fm-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .file-mini-row .fm-size { color: var(--text-light); font-size: 11px; flex-shrink: 0; }
    .file-mini-row .fm-remove { cursor: pointer; color: var(--red); font-size: 14px; flex-shrink: 0; padding: 0 4px; }
    /* 打包提示栏 */
    .pack-hint-bar { display: none; align-items: center; gap: 10px; margin-top: 10px; padding: 10px 14px; background: #fff8e1; border: 1px solid #ffe082; border-radius: var(--radius); font-size: 13px; color: #6d4c00; }
    .pack-hint-bar.visible { display: flex; }
    .pack-hint-bar .pack-btn { flex-shrink: 0; padding: 5px 14px; background: #ff9800; color: #fff; border: none; border-radius: 5px; cursor: pointer; font-size: 12px; font-weight: 600; font-family: inherit; white-space: nowrap; }
    .pack-hint-bar .pack-btn:hover { background: #f57c00; }
    .pack-hint-bar .pack-btn:disabled { background: #ccc; cursor: not-allowed; }
    .pack-hint-bar .pack-text { flex: 1; min-width: 0; }
    .pack-hint-bar input[type="text"] { flex-shrink: 0; }
    /* 感谢弹窗 */
    .thanks-modal .modal { max-width: 420px; text-align: center; }
    .thanks-icon { font-size: 56px; margin-bottom: 12px; }
    .thanks-title { font-size: 18px; font-weight: 700; margin-bottom: 8px; color: var(--text); }
    .thanks-desc { font-size: 13px; color: var(--text-light); line-height: 1.6; margin-bottom: 20px; }
    /* 编写模式切换 */
    .mode-switch { display: inline-flex; gap: 0; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
    .mode-btn { padding: 6px 16px; font-size: 13px; border: none; background: #fff; cursor: pointer; font-family: inherit; transition: background 0.15s; }
    .mode-btn:first-child { border-right: 1px solid var(--border); }
    .mode-btn.active { background: var(--green); color: #fff; }
    .mode-btn:not(.active):hover { background: var(--bg-secondary); }
    /* WangEditor 样式覆盖 */
    .w-e-toolbar { border-radius: var(--radius) var(--radius) 0 0 !important; }
    .w-e-text-container { border-radius: 0 0 var(--radius) var(--radius) !important; }
    /* 教案模板弹窗 */
    .tpl-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; max-height: 320px; overflow-y: auto; }
    .tpl-item { padding: 14px; border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer; transition: border-color 0.15s, background 0.15s; text-align: center; }
    .tpl-item:hover { border-color: var(--green); background: var(--green-light); }
    .tpl-item .tpl-icon { font-size: 28px; margin-bottom: 6px; }
    .tpl-item .tpl-name { font-size: 13px; font-weight: 600; }
    .tpl-item .tpl-desc { font-size: 11px; color: var(--text-light); margin-top: 2px; }
    .file-preview-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; background: var(--bg-secondary); border: 1px solid var(--border); border-radius: var(--radius) var(--radius) 0 0; font-size: 13px; font-weight: 600; }
    .preview-pane { border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }
    .preview-pane-header { padding: 6px 12px; background: var(--bg-secondary); border-bottom: 1px solid var(--border); font-size: 11px; font-weight: 600; color: var(--text-light); display: flex; align-items: center; gap: 6px; }
    .preview-pane-content { padding: 12px 16px; max-height: 420px; overflow-y: auto; font-size: 13px; line-height: 1.7; border: 1px solid var(--border); border-top: none; border-radius: 0 0 var(--radius) var(--radius); background: #fff; }
    .preview-pane-content h1 { font-size: 22px; margin-bottom: 8px; }
    .preview-pane-content h2 { font-size: 17px; margin: 12px 0 6px; }
    .preview-pane-content h3 { font-size: 14px; margin: 8px 0 4px; }
    .preview-pane-content p { margin-bottom: 8px; }
    .preview-pane-content ul, .preview-pane-content ol { padding-left: 20px; margin-bottom: 8px; }
    .preview-pane-content code { background: #f6f8fa; padding: 1px 4px; border-radius: 3px; }
    .preview-pane-content pre { background: #f6f8fa; padding: 10px; border-radius: var(--radius); overflow-x: auto; }
    .write-body .form-group { margin-bottom: 16px; }
    .write-body .form-group label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 4px; }
    .write-body .form-group input, .write-body .form-group textarea, .write-body .form-group select {
      width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius);
      font-size: 13px; font-family: inherit;
    }
    .write-body .form-row { display: flex; gap: 12px; }
    .write-body .form-row .form-group { flex: 1; }
    @media (max-width: 500px) { .write-body .form-row { flex-direction: column; } }
    .write-body .write-status { padding: 10px 16px; border-radius: var(--radius); font-size: 13px; margin-bottom: 12px; display: none; }
    .write-body .write-status.success { display: block; background: #dcffe4; color: #1a5c22; }
    .write-body .write-status.error { display: block; background: #ffebe9; color: #cf222e; }
    .write-body .write-status.info { display: block; background: #ddf4ff; color: #0969da; }
    .write-body .btn-row { display: flex; gap: 8px; margin-top: 16px; }
    /* 教案列表 视图切换 */
    .layout-toggle { display: inline-flex; gap: 0; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
    .layout-toggle button { padding: 5px 10px; background: #fff; border: none; cursor: pointer; font-size: 14px; }
    .layout-toggle button:hover { background: var(--bg-secondary); }
    .layout-toggle button.active { background: var(--green-light); color: var(--green); }

    /* ========== 视图：仓库页面 ========== */
    .repo-page { background:var(--body-bg); min-height:calc(100vh - var(--nav-height)); }
    /* 头部区域 */
    .repo-head-wrap{background:#fff;border-bottom:1px solid var(--border);padding:16px 24px}
    .repo-head{display:flex;align-items:flex-start;gap:10px}
    .repo-head .repo-icon{font-size:20px;margin-top:3px;flex-shrink:0}
    .repo-head .repo-info{flex:1;min-width:0}
    .repo-fullname-row{display:inline-flex;align-items:center;gap:6px;margin-bottom:4px}
    .repo-fullname{font-size:20px;font-weight:600;line-height:1.4}
    .repo-vis-badge{display:inline-block;font-size:11px;padding:1px 7px;border:1px solid var(--border);border-radius:12px;color:var(--text-light);font-weight:normal}
    .repo-desc{font-size:14px;color:var(--text-light);max-width:720px;line-height:1.5}
    /* 操作按钮行 */
    .repo-actions-row{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
    /* 统计信息条 */
    .repo-stats-bar { display:flex; align-items:center; gap:0; margin-top:10px; font-size:12px; color:var(--text-light); flex-wrap:wrap; }
    .repo-stat-item { display:inline-flex; align-items:center; gap:3px; padding:3px 10px; white-space:nowrap; }
    .repo-stat-item strong { color:var(--text); font-weight:600; }
    .repo-stat-link { color:var(--text-link); text-decoration:none; cursor:pointer; }
    .repo-stat-link:hover { text-decoration:underline; }
    .repo-stat-public { background:var(--bg-secondary); border-radius:12px; padding:2px 10px; font-size:11px; font-weight:500; margin-left:4px; }
    @media(max-width:640px){.repo-stats-bar{gap:2px}.repo-stat-item{padding:3px 6px}}
    .btn-watch,.btn-star,.btn-fork{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border-radius:6px;font-size:12px;cursor:pointer;font-family:inherit;white-space:nowrap;border:none}
    .btn-watch{background:#f6f8fa;border:1px solid var(--border);color:var(--text)}
    .btn-watch:hover{background:#f3f4f6}
    .btn-star{background:#f6f8fa;border:1px solid var(--border);color:var(--text)}
    .btn-star:hover{border-color:#d4a72c}
    .btn-star.starred{background:#0969da;color:#fff;border-color:#0969da}
    .btn-fork{background:#238636;color:#fff;padding:5px 14px;font-weight:500}
    .btn-fork:hover{background:#2ea043}
    .action-count{background:#afb8c133;border-radius:10px;padding:0 5px;font-size:11px;margin-left:-2px}
    /* 标签栏 */
    .repo-tabs{display:flex;gap:0;overflow-x:auto;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--border);margin-top:16px;scrollbar-width:none}
    .repo-tabs::-webkit-scrollbar{display:none}
    .repo-tab{padding:10px 16px;font-size:14px;color:var(--text-light);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;background:none;border-top:none;border-left:none;border-right:none;display:inline-flex;align-items:center;gap:5px;font-family:inherit}
    .repo-tab:hover{border-bottom-color:#d0d7de;color:var(--text)}
    .repo-tab.active{color:var(--text);font-weight:600;border-bottom-color:#fd8c73}
    .tab-count{background:#afb8c133;border-radius:10px;padding:0 6px;font-size:12px}
    /* 内容区：左主 + 右侧栏 */
    .repo-content-grid{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:24px;padding:24px;max-width:1280px;margin:0 auto;align-items:start}
    @media(max-width:1012px){.repo-content-grid{grid-template-columns:1fr;padding:16px}.repo-about-sidebar{order:-1;border-top:1px solid var(--border);padding-top:16px}}
    .repo-main-content{min-width:0}
    .repo-tab-panel{display:none}
    .repo-tab-panel.active{display:block}

    /* ---- Code 工具栏 ---- */
    .code-toolbar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;flex-wrap:wrap}
    .branch-selector{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;cursor:pointer;background:#fff;font-weight:600;white-space:nowrap}
    .branch-selector:hover{background:var(--bg-secondary)}
    .toolbar-actions{display:flex;gap:6px;margin-left:auto}
    .toolbar-btn{padding:5px 11px;border:1px solid var(--border);border-radius:6px;font-size:12px;background:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font-family:inherit;white-space:nowrap;}
    .toolbar-btn:hover{background:var(--bg-secondary)}
    .toolbar-btn.pri{background:#238636;color:#fff;border:none;font-weight:500}
    .tag-badge{font-size:11px;padding:2px 8px;border:1px solid var(--border);border-radius:12px;color:var(--text-light);background:#fff}
    /* 文件列表（表格式：图标/名称/提交信息/时间）*/
    .file-list-header{display:grid;grid-template-columns:20px 1fr 2fr 100px;gap:8px;padding:8px 16px;font-size:11px;font-weight:600;color:var(--text-light);border-bottom:1px solid var(--border);background:#fff}
    .file-list-header>span:nth-child(2){padding-left:4px}
    .file-list-header>span:last-child{text-align:right}
    .file-list{border:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);overflow:hidden;background:#fff}
    .file-row{display:grid;grid-template-columns:20px 1fr 2fr 100px;gap:8px;padding:8px 16px;font-size:13px;border-bottom:1px solid var(--border);cursor:pointer;align-items:center;transition:background 0.08s}
    .file-row:last-child{border-bottom:none}
    .file-row:hover{background:rgba(208,215,222,0.32)}
    .file-row .fi-icon{font-size:16px;flex-shrink:0;text-align:center}
    .file-row .fi-name{color:var(--text-link);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .file-row.dir .fi-name{font-weight:600}
    .file-row .fi-msg{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
    .file-row .fi-time{color:var(--text-light);text-align:right;font-size:12px;white-space:nowrap}
    /* README 渲染区 */
    .readme-section{margin-top:24px}
    .readme-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;background:var(--bg-secondary);font-weight:600;font-size:14px}
    .readme-body{border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius);padding:24px 28px;background:#fff;font-size:14px;line-height:1.7}
    .readme-body h1{font-size:26px;margin-bottom:12px;border-bottom:1px solid #d0d7de;padding-bottom:10px}
    .readme-body h2{font-size:18px;margin:24px 0 12px;border-bottom:1px solid #d0d7de;padding-bottom:8px}
    .readme-body p{margin-bottom:10px}
    .readme-body ul,.readme-body ol{margin:8px 0;padding-left:28px}
    .readme-body li{margin-bottom:3px}
    .readme-body code{background:var(--bg-secondary);padding:1px 5px;border-radius:4px}
    .readme-body pre{background:var(--bg-secondary);padding:14px;border-radius:6px;overflow-x:auto;margin-bottom:14px}
    .readme-body pre code{background:none;padding:0}

    /* ---- 右侧 About 侧边栏（MoneyPrinterTurbo 风格）---- */
    .about-section{padding:14px 0;border-top:1px solid var(--border)}
    .about-section:first-child{border-top:none;padding-top:0}
    .about-section-title{font-size:13px;font-weight:600;margin-bottom:6px;display:block}
    .about-section-desc{font-size:13px;line-height:1.6;color:var(--text);word-break:break-word}
    .about-meta-kv{display:flex;align-items:center;justify-content:space-between;padding:2px 0;font-size:13px;color:var(--text-light)}
    .about-meta-kv strong{color:var(--text);font-weight:600}
    .about-link-text{display:block;font-size:13px;color:var(--text-link);padding:2px 0;text-decoration:none}
    .about-link-text:hover{text-decoration:underline}
    /* 发布版本 */
    .about-release-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}
    .about-release-tag{display:inline-block;padding:2px 10px;background:#dafbe1;color:#1a7f37;border-radius:12px;font-size:12px;font-weight:600}
    .about-release-label{font-size:12px;color:var(--text-light)}
    .about-release-more{font-size:12px;color:var(--text-light)}
    /* 语言/学科条 */
    .about-lang-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}
    .about-lang-bar{height:8px;border-radius:4px;overflow:hidden;display:flex;margin-bottom:8px}
    .about-lang-bar-seg{height:100%}
    .about-lang-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-light);padding:2px 0}
    .about-lang-item strong{color:var(--text);font-weight:600}
    .about-lang-percent{font-size:11px;color:var(--text-light);margin-left:auto}
    /* 话题标签 */
    .about-topics{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
    .about-topic{padding:2px 10px;background:#ddf4ff;color:#0969da;border-radius:12px;font-size:11px;font-weight:500;text-decoration:none;white-space:nowrap}
    .about-topic:hover{background:#b6e3ff;text-decoration:none}
    .about-link{display:block;padding:8px 14px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;color:var(--text-link);text-align:center;text-decoration:none;margin-top:8px;font-weight:500}
    .about-link:hover{background:var(--bg-secondary);text-decoration:none}

    /* ---- 文件预览面板（右侧替换 About 侧边栏）---- */
    .repo-file-preview{position:sticky;top:calc(var(--nav-height) + 16px);border:1px solid var(--border);border-radius:var(--radius);background:#fff;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - var(--nav-height) - 48px)}
    .fp-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg-secondary);border-bottom:1px solid var(--border);gap:8px}
    .fp-header-left{display:flex;align-items:center;gap:6px;min-width:0}
    .fp-file-icon{font-size:16px;flex-shrink:0}
    .fp-file-name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .fp-header-right{display:flex;align-items:center;gap:4px;flex-shrink:0}
    .fp-action-btn{padding:4px 10px;border:1px solid var(--border);border-radius:var(--radius);font-size:12px;color:var(--text-link);text-decoration:none;white-space:nowrap}
    .fp-action-btn:hover{background:var(--bg-secondary);text-decoration:none}
    .fp-close-btn{width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-light);line-height:1;padding:0}
    .fp-close-btn:hover{background:var(--bg-secondary);color:var(--text)}
    .fp-body{flex:1;overflow-y:auto;padding:16px;font-size:13px;line-height:1.7;word-break:break-word}
    .fp-body h1{font-size:22px;margin-bottom:10px;border-bottom:1px solid var(--border);padding-bottom:8px}
    .fp-body h2{font-size:17px;margin:20px 0 10px;border-bottom:1px solid var(--border);padding-bottom:6px}
    .fp-body h3{font-size:14px;margin:16px 0 8px}
    .fp-body p{margin-bottom:8px}
    .fp-body ul,.fp-body ol{margin:6px 0;padding-left:24px}
    .fp-body li{margin-bottom:3px}
    .fp-body code{background:rgba(175,184,193,0.2);padding:1px 5px;border-radius:4px;font-size:12px}
    .fp-body pre{background:var(--bg-secondary);padding:12px;border-radius:6px;overflow-x:auto;margin-bottom:12px;font-size:12px;line-height:1.5}
    .fp-body pre code{background:none;padding:0}
    .fp-body table{border-collapse:collapse;margin:8px 0;width:100%}
    .fp-body th,.fp-body td{border:1px solid var(--border);padding:6px 12px;text-align:left;font-size:12px}
    .fp-body th{background:var(--bg-secondary);font-weight:600}
    .fp-body blockquote{border-left:3px solid var(--border);padding:4px 12px;color:var(--text-light);margin:8px 0}
    .fp-body img{max-width:100%;height:auto;border-radius:4px}
    .fp-body a{color:var(--text-link)}
    .fp-plain{white-space:pre-wrap;font-family:"Cascadia Code","Fira Code","Consolas",monospace;font-size:12px;line-height:1.6;background:var(--bg-secondary);padding:14px;border-radius:var(--radius);overflow-x:auto}
    @media(max-width:1012px){.repo-file-preview{position:static;max-height:none}}

    /* ---- 研讨单 Issues ---- */
    .issues-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px;flex-wrap:wrap}
    .issues-state-tabs{display:flex;gap:0}
    .issues-state-tab{padding:7px 14px;font-size:13px;border:1px solid transparent;border-radius:var(--radius) var(--radius) 0 0;background:none;color:var(--text-light);cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:4px}
    .issues-state-tab:hover{background:var(--bg-secondary);color:var(--text)}
    .issues-state-tab.active{font-weight:600;color:var(--text);border-color:var(--border);border-bottom-color:transparent}
    .issues-search-input{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;width:200px;font-family:inherit}
    .issue-item{border-top:1px solid var(--border);padding:14px 0;display:flex;align-items:flex-start;gap:10px;cursor:pointer}
    .issue-item:hover{background:var(--bg-secondary);margin:0 -16px;padding:14px 16px}
    .issue-status-icon{font-size:16px;flex-shrink:0;margin-top:2px}
    .issue-status-icon.open{color:var(--green)}.issue-status-icon.closed{color:#8250df}
    .issue-main{flex:1;min-width:0}
    .issue-tit{font-size:15px;font-weight:600;line-height:1.4}
    .issue-tit a{color:var(--text)}
    .issue-tit a:hover{color:var(--text-link);text-decoration:none}
    .issue-labels{display:inline-flex;gap:4px;flex-wrap:wrap;margin-left:6px}
    .issue-lbl{padding:1px 7px;border-radius:10px;font-size:11px;font-weight:500}
    .issue-meta{font-size:12px;color:var(--text-light);margin-top:4px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
    .issue-comments{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--text-light)}

    /* ---- 仓库卡片 ---- */
    .repo-card{border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:12px;cursor:pointer;transition:background 0.1s;display:flex;align-items:flex-start;gap:12px;background:#fff}
    .repo-card:hover{background:var(--bg-secondary)}
    .repo-card .rc-icon{font-size:16px;flex-shrink:0;margin-top:1px}
    .repo-card .rc-body{flex:1;min-width:0}
    .repo-card .rc-name{font-size:16px;font-weight:600;color:var(--text-link)}
    .rc-vis{font-size:10px;padding:1px 6px;border:1px solid var(--border);border-radius:10px;color:var(--text-light);margin-left:6px;vertical-align:middle;font-weight:normal}
    .repo-card .rc-desc{font-size:13px;color:var(--text-light);margin-top:4px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
    .repo-card .rc-meta{font-size:12px;color:var(--text-light);margin-top:8px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
    .rc-meta span{display:inline-flex;align-items:center;gap:3px}
    .back-link { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: var(--text-link); cursor: pointer; margin-bottom: 4px; }
    .back-link:hover { text-decoration: underline; }
    .search-repo { width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 14px; margin-bottom: 16px; font-family: inherit; }
    .search-repo:focus { outline: 2px solid var(--text-link); outline-offset: -1px; }
    /* Breadcrumb back to root */
    .code-breadcrumb { font-size: 13px; padding: 8px 0; display: flex; align-items: center; gap: 4px; }
    .code-breadcrumb a { color: var(--text-link); cursor: pointer; }

    /* ========== 来源标签 ========== */
    .source-badge {
      display: inline-flex; align-items: center; gap: 3px;
      padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 500;
    }
    .source-seed { background: #dcffe4; color: #1a5c22; }
    .source-community { background: #fff8e1; color: #8a6d14; }
    /* 侧边栏分组 */
    .tree-section { padding: 4px 12px 2px; font-size: 10px; font-weight: 700; color: var(--text-light); text-transform: uppercase; letter-spacing: 0.5px; margin-top: 4px; }
    .tree-section:first-child { margin-top: 0; }
    /* 来源筛选栏 */
    .source-tabs { display: flex; gap: 0; }
    .src-tab {
      padding: 6px 14px; font-size: 12px; border: 1px solid var(--border); border-right: none;
      background: #fff; color: var(--text-light); cursor: pointer; font-family: inherit;
      transition: background 0.1s, color 0.1s;
    }
    .src-tab:first-child { border-radius: var(--radius) 0 0 var(--radius); }
    .src-tab:last-child { border-radius: 0 var(--radius) var(--radius) 0; border-right: 1px solid var(--border); }
    .src-tab:hover { background: var(--bg-secondary); }
    .src-tab.active { background: var(--green); color: #fff; border-color: var(--green); }
    .lc .lc-source { margin-top: 2px; }

    /* ========== 首页 Hero ========== */
    .home-hero {
      text-align: center; padding: 60px 32px 40px;
      background: linear-gradient(180deg, #f2faf3 0%, #fff 100%);
      border-bottom: 1px solid var(--border);
    }
    .home-hero h1 {
      font-size: 40px; font-weight: 800; letter-spacing: 4px; margin-bottom: 8px;
      background: linear-gradient(135deg, var(--green), #1a5c22);
      -webkit-background-clip: text; -webkit-text-fill-color: transparent;
      background-clip: text;
    }
    .home-hero .how { color: var(--gold); font-style: italic; font-size: 24px; -webkit-text-fill-color: var(--gold); }
    .home-hero .motto { font-size: 17px; color: var(--text-light); margin-bottom: 24px; }
    .home-stats { display: flex; justify-content: center; gap: 48px; margin: 0 auto 32px; max-width: 500px; }
    @media (max-width:500px) { .home-stats { gap: 24px; } }
    .home-stats .hs-num { font-size: 28px; font-weight: 700; color: var(--green); }
    .home-stats .hs-label { font-size: 13px; color: var(--text-light); }
    .home-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
    /* 统计徽章 Strip（参考 MoneyPrinterTurbo） */
    .badge-strip { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; margin: 0 auto 24px; max-width: 600px; }
    .badge-item { display: inline-flex; align-items: center; gap: 6px; padding: 5px 14px; border: 1px solid var(--border); border-radius: 20px; font-size: 12px; color: var(--text-light); background: #fff; white-space: nowrap; text-decoration: none; }
    .badge-item:hover { border-color: #0969da; background: var(--blue-light); text-decoration: none; }
    .badge-item .badge-icon { font-size: 14px; }
    .badge-item .badge-val { font-weight: 700; color: var(--text); }
    .badge-item .badge-name { margin-left: 2px; }
    .badge-trending { background: linear-gradient(135deg, #ff7b72, #fd8c73); color: #fff; border: none; font-weight: 600; }
    .badge-trending:hover { background: linear-gradient(135deg, #fd8c73, #ff7b72); color: #fff; border: none; }
    /* 分组面板（编写教案表单用） */
    .write-panel { border: 1px solid var(--border); border-radius: var(--radius); background: #fff; overflow: hidden; margin-bottom: 16px; }
    .write-panel-header { padding: 12px 20px; background: var(--bg-secondary); font-size: 14px; font-weight: 600; border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 8px; }
    .write-panel-header .wp-icon { font-size: 18px; }
    .write-panel-body { padding: 16px 20px; }
    .home-section { padding: 0 32px; max-width: 900px; margin: 0 auto; }
    .home-section h2 { font-size: 18px; font-weight: 600; margin: 36px 0 16px; text-align: center; }
    .home-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)); gap: 12px; }
    .home-card {
      border: 1px solid var(--border); border-radius: var(--radius); padding: 16px;
      background: #fff; transition: box-shadow 0.15s; cursor: pointer;
    }
    .home-card:hover { box-shadow: var(--shadow); }
    .home-card .hc-subject { font-size: 11px; color: var(--gold); font-weight: 600; }
    .home-card .hc-title { font-size: 14px; font-weight: 600; color: var(--text-link); margin: 4px 0; }
    .home-card .hc-meta { font-size: 11px; color: var(--text-light); }
    .guide-cards { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; text-align: center; }
    @media (max-width:768px) { .guide-cards { grid-template-columns: 1fr; } .home-hero h1 { font-size: 30px; } .home-section { padding: 0 16px; } }
    .guide-card {
      border: 1px solid var(--border); border-radius: var(--radius); padding: 24px 20px; background: #fff;
    }
    .guide-card .gc-num { font-size: 32px; margin-bottom: 8px; }
    .guide-card .gc-title { font-size: 15px; font-weight: 600; margin-bottom: 6px; }
    .guide-card .gc-desc { font-size: 13px; color: var(--text-light); line-height: 1.6; }

    /* ========== 弹窗 ========== */
    .modal-overlay {
      display: none; position: fixed; inset: 0; z-index: 200;
      background: rgba(0,0,0,0.4); align-items: center; justify-content: center;
    }
    .modal-overlay.open { display: flex; }
    .modal {
      background: #fff; border-radius: 8px; width: 560px; max-width: 95vw;
      max-height: 85vh; overflow-y: auto; box-shadow: 0 16px 48px rgba(0,0,0,0.2);
    }
    .modal-header {
      padding: 16px 20px; border-bottom: 1px solid var(--border);
      font-size: 16px; font-weight: 600; display: flex; align-items: center; justify-content: space-between;
    }
    .modal-close { background: none; border: none; font-size: 20px; cursor: pointer; color: var(--text-light); padding: 4px 8px; border-radius: var(--radius); }
    .modal-close:hover { background: var(--bg-secondary); color: var(--text); }
    .modal-body { padding: 20px; }
    .modal-body label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 4px; }
    .modal-body input, .modal-body textarea, .modal-body select {
      width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius);
      font-size: 13px; font-family: inherit; margin-bottom: 14px;
    }
    .modal-body input:focus, .modal-body textarea:focus, .modal-body select:focus {
      outline: 2px solid var(--text-link); outline-offset: -1px;
    }
    .modal-body textarea { resize: vertical; min-height: 100px; }
    .modal-actions { display: flex; gap: 8px; justify-content: flex-end; padding: 0 0 8px; }
    .modal-actions .btn { min-width: 80px; justify-content: center; }
    .modal-status { padding: 8px 16px; font-size: 13px; text-align: center; border-radius: var(--radius); margin-bottom: 8px; display: none; }
    .modal-status.success { display: block; background: #dcffe4; color: #1a5c22; }
    .modal-status.error { display: block; background: #ffebe9; color: #cf222e; }
    .modal-status.info { display: block; background: #ddf4ff; color: #0969da; }
    .notify-banner { padding: 10px 14px; font-size: 13px; border-radius: var(--radius); line-height: 1.5; }
    .notify-banner.info { background: #ddf4ff; color: #0969da; border: 1px solid #b3e0fc; }
    .notify-banner.success { background: #dcffe4; color: #1a5c22; border: 1px solid #a3e6b0; }

    /* ========== 授权弹窗 ========== */
    .consent-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 1000; display: flex; align-items: center; justify-content: center; }
    .consent-modal { background: #fff; border-radius: 12px; width: 460px; max-width: 92vw; max-height: 80vh; overflow-y: auto; box-shadow: 0 12px 40px rgba(0,0,0,0.2); }
    .consent-hd { padding: 20px 24px 0; display: flex; align-items: center; gap: 10px; }
    .consent-icon { font-size: 28px; }
    .consent-title { font-size: 17px; font-weight: 700; }
    .consent-bd { padding: 16px 24px; color: var(--text-light); font-size: 13px; line-height: 1.7; }
    .consent-detail { background: var(--bg-secondary); border-radius: var(--radius); padding: 12px 14px; margin-top: 12px; font-size: 12px; }
    .consent-detail dt { font-weight: 600; color: var(--text); margin-bottom: 2px; }
    .consent-detail dd { margin: 0 0 8px; color: var(--text-light); }
    .consent-detail dd:last-child { margin-bottom: 0; }
    .consent-ft { padding: 12px 24px 20px; display: flex; gap: 8px; justify-content: flex-end; }
    .consent-ft .btn { min-width: 90px; justify-content: center; }

    /* ========== 隐私与授权面板 ========== */
    .privacy-section { margin-bottom: 10px; }
    .privacy-item { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; background: var(--bg-secondary); border-radius: var(--radius); margin-bottom: 8px; }
    .privacy-item-left { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }
    .privacy-item-icon { font-size: 18px; flex-shrink: 0; }
    .privacy-item-info { min-width: 0; }
    .privacy-item-name { font-weight: 600; font-size: 13px; }
    .privacy-item-value { font-size: 11px; color: var(--text-light); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .privacy-item-time { font-size: 10px; color: var(--text-light); }
    .consent-badge { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; flex-shrink: 0; margin-left: 8px; }
    .consent-badge.granted { background: #dcffe4; color: #1a5c22; }
    .consent-badge.denied { background: #ffebe9; color: #cf222e; }
    .consent-badge.pending { background: #fff8c5; color: #bf8700; }
    .privacy-item-actions { display: flex; gap: 6px; flex-shrink: 0; margin-left: 12px; }
    .privacy-item-actions button { padding: 4px 10px; font-size: 11px; border-radius: 4px; border: 1px solid var(--border); background: #fff; cursor: pointer; white-space: nowrap; }
    .privacy-item-actions button:hover { background: var(--bg-secondary); }
    .privacy-item-actions button.danger { color: #cf222e; border-color: #ff8182; }
    .privacy-item-actions button.danger:hover { background: #ffebe9; }

    /* 首次登录引导 */
    .first-login-banner { padding: 14px 16px; background: linear-gradient(135deg,#f0f5ff,#e8f0fe); border: 1px solid #c2d9ff; border-radius: var(--radius); margin-bottom: 16px; }
    .first-login-banner h3 { margin: 0 0 6px; font-size: 15px; }
    .first-login-banner p { font-size: 12px; color: var(--text-light); margin: 0 0 10px; }
    .consent-batch { max-height: 240px; overflow-y: auto; margin-bottom: 12px; }
    .consent-batch-item { display: flex; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 12px; }
    .consent-batch-item:last-child { border-bottom: none; }
    .consent-batch-item input[type="checkbox"] { width: auto; margin: 0; }

    /* ========== 协议声明弹窗 ========== */
    .policy-modal { width: 620px; }
    .policy-list-item { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 8px; cursor: pointer; transition: all 0.15s; }
    .policy-list-item:hover { border-color: var(--text-link); background: var(--blue-light); }
    .policy-list-icon { font-size: 22px; flex-shrink: 0; }
    .policy-list-info { flex: 1; min-width: 0; }
    .policy-list-title { font-weight: 600; font-size: 14px; margin-bottom: 2px; }
    .policy-list-desc { font-size: 11px; color: var(--text-light); }
    .policy-list-arrow { color: var(--text-light); font-size: 14px; flex-shrink: 0; }
    .policy-detail-wrap { max-height: 60vh; overflow-y: auto; padding: 4px; }
    .policy-detail-wrap h2 { font-size: 16px; margin: 16px 0 8px; }
    .policy-detail-wrap h3 { font-size: 14px; margin: 12px 0 6px; }
    .policy-detail-wrap h4 { font-size: 13px; margin: 10px 0 4px; }
    .policy-detail-wrap p { font-size: 13px; line-height: 1.7; color: var(--text); margin: 0 0 8px; }
    .policy-detail-wrap ul, .policy-detail-wrap ol { font-size: 13px; line-height: 1.7; margin: 0 0 8px; padding-left: 20px; }
    .policy-detail-wrap li { margin-bottom: 4px; }
    .policy-detail-wrap blockquote { border-left: 4px solid var(--text-link); padding: 6px 12px; margin: 8px 0; background: var(--blue-light); border-radius: 0 var(--radius) var(--radius) 0; color: var(--text); font-size: 13px; }
    .policy-detail-wrap code { background: var(--bg-secondary); padding: 1px 5px; border-radius: 3px; font-size: 12px; }
    .policy-detail-wrap pre { background: var(--bg-secondary); padding: 12px; border-radius: var(--radius); overflow-x: auto; font-size: 12px; margin: 8px 0; }
    .policy-detail-wrap table { width: 100%; border-collapse: collapse; margin: 8px 0; font-size: 12px; }
    .policy-detail-wrap th { background: var(--bg-secondary); padding: 8px; text-align: left; font-weight: 600; border: 1px solid var(--border); }
    .policy-detail-wrap td { padding: 8px; border: 1px solid var(--border); }
    .policy-detail-wrap hr { border: none; border-top: 1px solid var(--border); margin: 16px 0; }
    .policy-back-btn { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--text-link); cursor: pointer; background: none; border: none; padding: 4px 0; margin-bottom: 12px; }
    .policy-back-btn:hover { text-decoration: underline; }
    .policy-ext-link { display: inline-block; margin-top: 12px; font-size: 12px; color: var(--text-link); text-decoration: none; }
    .policy-ext-link:hover { text-decoration: underline; }

    /* ========== 新建仓库弹窗美化 ========== */
    .create-section { margin-bottom: 28px; }
    .create-section-title { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }
    .create-step-num { width: 22px; height: 22px; background: linear-gradient(135deg,#0969da,#0550ae); color: #fff; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; flex-shrink: 0; }
    .create-label { display: block; font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 6px; }
    .create-required { color: #cf222e; font-weight: 400; }
    .create-optional { font-weight: 400; color: var(--text-light); font-size: 12px; }
    .create-hint { font-size: 12px; color: var(--text-light); margin-bottom: 18px; line-height: 1.5; transition: color 0.2s; }

    .create-owner-row { display: flex; align-items: center; gap: 0; margin-bottom: 6px; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: border-color 0.15s, box-shadow 0.15s; }
    .create-owner-row:focus-within { border-color: #0969da; box-shadow: 0 0 0 3px rgba(9,105,218,0.12); }
    .create-owner-tag { padding: 9px 14px; background: var(--bg-secondary); font-size: 13px; font-weight: 600; color: var(--text); border-right: 1px solid var(--border); white-space: nowrap; user-select: none; }
    .create-owner-sep { padding: 9px 4px; background: var(--bg-secondary); font-size: 16px; color: var(--text-light); user-select: none; }
    .create-name-input { flex: 1; padding: 9px 14px; border: none; outline: none; font-size: 14px; font-family: inherit; background: #fff; min-width: 0; }
    .create-name-input::placeholder { color: #afb8c1; }

    .create-desc-wrap { position: relative; margin-bottom: 4px; }
    .create-desc-input { width: 100%; padding: 10px 14px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px; font-family: inherit; resize: vertical; min-height: 60px; transition: border-color 0.15s, box-shadow 0.15s; }
    .create-desc-input:focus { border-color: #0969da; box-shadow: 0 0 0 3px rgba(9,105,218,0.12); outline: none; }
    .create-desc-counter { font-size: 11px; color: var(--text-light); text-align: right; margin-bottom: 2px; }

    .create-vis-desc { font-size: 12px; color: var(--text-light); margin-bottom: 10px; }
    .create-vis-row { display: flex; gap: 10px; margin-bottom: 18px; }
    .create-vis-card { flex: 1; padding: 14px; border: 2px solid var(--border); border-radius: var(--radius); cursor: pointer; display: flex; align-items: flex-start; gap: 10px; transition: all 0.2s; background: #fff; }
    .create-vis-card:hover { border-color: #8b949e; background: var(--bg-secondary); }
    .create-vis-card.active { border-color: #0969da; background: #ddf4ff; }
    .create-vis-icon { font-size: 22px; flex-shrink: 0; line-height: 1.2; }
    .create-vis-card strong { display: block; font-size: 13px; margin-bottom: 4px; }
    .create-vis-sub { font-size: 11px; color: var(--text-light); line-height: 1.5; }

    /* 创建模式切换标签 */
    .create-mode-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border); padding: 0 24px; background: #fff; }
    .create-mode-tab { padding: 10px 18px; font-size: 13px; border: none; background: none; color: var(--text-light); cursor: pointer; border-bottom: 2px solid transparent; font-family: inherit; display: inline-flex; align-items: center; gap: 5px; transition: all 0.15s; }
    .create-mode-tab:hover { color: var(--text); border-bottom-color: #d0d7de; }
    .create-mode-tab.active { color: var(--text); font-weight: 600; border-bottom-color: #0969da; }
    .create-mode-panel { padding: 24px; max-height: 52vh; overflow-y: auto; }
    .create-mode-panel.hidden { display: none; }

    /* 许可证类型切换标签（版权协议 / 开源协议） */
    .lic-mode-tabs { display: flex; gap: 0; margin-bottom: 12px; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
    .lic-mode-tab { flex: 1; padding: 10px 16px; font-size: 13px; border: none; background: #fff; color: var(--text-light); cursor: pointer; font-family: inherit; text-align: center; transition: all 0.15s; font-weight: 500; }
    .lic-mode-tab:first-child { border-right: 1px solid var(--border); }
    .lic-mode-tab:hover { background: var(--bg-secondary); color: var(--text); }
    .lic-mode-tab.active { background: #ddf4ff; color: #0969da; font-weight: 700; }
    .lic-panel { margin-bottom: 8px; }
    .lic-hint { font-size: 11px; color: var(--text-light); margin-top: 6px; line-height: 1.5; }

    .create-init-box { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
    .create-init-row { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--border); gap: 16px; }
    .create-init-row:last-child { border-bottom: none; }
    .create-init-left { flex: 1; min-width: 0; }
    .create-init-title { font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 2px; }
    .create-init-sub { font-size: 11px; color: var(--text-light); line-height: 1.4; }
    .create-init-select { padding: 7px 28px 7px 12px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px; font-family: inherit; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23656d76' d='M6 8.825a.75.75 0 0 1-.53-.22l-4.5-4.5a.75.75 0 0 1 1.06-1.06L6 7.065l3.97-3.97a.75.75 0 1 1 1.06 1.06l-4.5 4.5a.75.75 0 0 1-.53.22Z'/%3E%3C/svg%3E") no-repeat right 10px center; appearance: none; -webkit-appearance: none; cursor: pointer; white-space: nowrap; flex-shrink: 0; }
    .create-init-select:focus { outline: 2px solid #0969da; outline-offset: -1px; }

    .create-toggle { position: relative; display: inline-block; width: 44px; height: 24px; flex-shrink: 0; cursor: pointer; }
    .create-toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
    .create-toggle-track { position: absolute; inset: 0; background: #8b949e; border-radius: 12px; transition: background 0.25s; }
    .create-toggle-knob { position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; background: #fff; border-radius: 50%; transition: transform 0.25s cubic-bezier(0.34,1.56,0.64,1); box-shadow: 0 1px 3px rgba(0,0,0,0.2); }

    /* ========== 模板选择弹窗 ========== */
    .tpl-header-bar {
      background: linear-gradient(135deg, #f0f7ff 0%, #e8f0fe 100%);
      padding: 20px 24px; border-bottom: 1px solid var(--border);
      display: flex; align-items: center; justify-content: space-between;
    }
    .tpl-header-bar .tpl-title-wrap { display: flex; align-items: center; gap: 12px; }
    .tpl-header-bar .tpl-icon-box {
      width: 36px; height: 36px; background: linear-gradient(135deg, #0969da, #0550ae);
      border-radius: 10px; display: flex; align-items: center; justify-content: center;
      color: #fff; font-size: 18px; box-shadow: 0 2px 6px rgba(5,90,174,0.3);
    }
    .tpl-header-bar .tpl-title { font-size: 16px; font-weight: 700; color: var(--text); }
    .tpl-header-bar .tpl-subtitle { font-size: 12px; color: var(--text-light); }
    .tpl-body { padding: 24px; max-height: 52vh; overflow-y: auto; }
    .tpl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
    .tpl-card {
      border: 2px solid var(--border); border-radius: 10px; padding: 20px;
      cursor: pointer; transition: all 0.2s; background: #fff; display: flex;
      flex-direction: column; gap: 10px; position: relative; overflow: hidden;
    }
    .tpl-card:hover { border-color: #0969da; box-shadow: 0 4px 16px rgba(9,105,218,0.12); transform: translateY(-2px); }
    .tpl-card.selected { border-color: #0969da; background: #f0f7ff; box-shadow: 0 0 0 3px rgba(9,105,218,0.15); }
    .tpl-card .tpl-card-top { display: flex; align-items: flex-start; gap: 10px; }
    .tpl-card .tpl-card-icon { font-size: 28px; flex-shrink: 0; line-height: 1; }
    .tpl-card .tpl-card-info { flex: 1; min-width: 0; }
    .tpl-card .tpl-card-name { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 2px; }
    .tpl-card .tpl-card-owner { font-size: 11px; color: var(--text-light); }
    .tpl-card .tpl-card-desc { font-size: 12px; color: var(--text-light); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
    .tpl-card .tpl-card-meta { display: flex; gap: 14px; font-size: 11px; color: var(--text-light); margin-top: 2px; }
    .tpl-card .tpl-card-meta span { display: inline-flex; align-items: center; gap: 3px; }
    .tpl-card .tpl-card-check { position: absolute; top: 10px; right: 10px; width: 22px; height: 22px; border-radius: 50%; background: #0969da; color: #fff; display: none; align-items: center; justify-content: center; font-size: 12px; }
    .tpl-card.selected .tpl-card-check { display: flex; }
    .tpl-new-repo-row { display: flex; gap: 10px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--border); align-items: center; flex-wrap: wrap; }
    .tpl-new-repo-row .tpl-input { flex: 1; min-width: 160px; padding: 9px 14px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px; font-family: inherit; transition: border-color 0.15s, box-shadow 0.15s; }
    .tpl-new-repo-row .tpl-input:focus { border-color: #0969da; box-shadow: 0 0 0 3px rgba(9,105,218,0.12); outline: none; }
    .tpl-new-repo-row .tpl-owner-display { font-size: 13px; color: var(--text); font-weight: 600; white-space: nowrap; }
    .tpl-owner-input-wrap { flex: 1; min-width: 160px; display: flex; align-items: center; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: border-color 0.15s, box-shadow 0.15s; }
    .tpl-owner-input-wrap:focus-within { border-color: #0969da; box-shadow: 0 0 0 3px rgba(9,105,218,0.12); }
    .tpl-owner-input-wrap .tpl-owner-tag { padding: 9px 12px; background: var(--bg-secondary); font-size: 13px; font-weight: 600; color: var(--text); border-right: 1px solid var(--border); white-space: nowrap; }
    .tpl-owner-input-wrap .tpl-owner-sep { padding: 9px 3px; background: var(--bg-secondary); font-size: 14px; color: var(--text-light); }
    .tpl-owner-input-wrap .tpl-name-input { flex: 1; padding: 9px 12px; border: none; outline: none; font-size: 13px; font-family: inherit; }

    /* ========== 通用 ========== */
    .empty-block { text-align: center; padding: 48px; color: var(--text-light); }
    .loading-block { text-align: center; padding: 48px; color: var(--text-light); }
    .spinner { display: inline-block; width: 28px; height: 28px; border: 3px solid var(--border); border-top-color: var(--green); border-radius: 50%; animation: spin 0.8s linear infinite; }
    @keyframes spin { to { transform: rotate(360deg); } }
    .loading-pulse { animation: pulse 1.4s ease-in-out infinite; }
    @keyframes pulse { 0%,100% { opacity: 0.4; } 50% { opacity: 1; } }
    /* ========== 骨架屏 ========== */
    @keyframes shimmer { 0% { background-position: -200px 0; } 100% { background-position: calc(200px + 100%) 0; } }
    .skeleton {
      background: linear-gradient(90deg, #e8eaed 25%, #f0f1f3 50%, #e8eaed 75%);
      background-size: 200px 100%;
      animation: shimmer 1.5s ease-in-out infinite;
      border-radius: 4px;
    }
    .sk-card {
      border: 1px solid var(--border); border-radius: var(--radius); padding: 20px;
      background: #fff; display: flex; flex-direction: column; gap: 10px;
    }
    .sk-line { height: 14px; border-radius: 4px; }
    .sk-line-sm { height: 10px; width: 60%; }
    .sk-line-md { height: 16px; width: 85%; }
    .sk-line-lg { height: 20px; width: 40%; }
    .sk-line-xs { height: 10px; width: 45%; }
    .nav-spacer { flex: 1; }
    /* ========== 举报弹窗 ========== */
    .report-radio-group { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 14px; }
    .report-radio-group label { display: flex; align-items: center; gap: 4px; font-size: 13px; cursor: pointer; padding: 4px 10px; border: 1px solid var(--border); border-radius: 14px; transition: all 0.15s; }
    .report-radio-group label:has(input:checked) { border-color: #cf222e; background: #ffebe9; color: #cf222e; }
    .report-radio-group input[type="radio"] { accent-color: #cf222e; }
    /* ========== 耕耘日历 ========== */
    .contrib-cal-wrap { margin-top: 20px; }
    .contrib-cal-wrap h3 { font-size: 15px; font-weight: 600; margin-bottom: 10px; }
    /* ========== 签到按钮 ========== */
    .signin-btn { padding: 6px 16px; border-radius: 16px; font-size: 13px; border: 1px solid var(--green); background: #fff; color: var(--green); cursor: pointer; transition: all 0.15s; }
    .signin-btn:hover { background: var(--green-light); }
    .signin-btn.done { opacity: 0.6; cursor: default; background: var(--green-light); }
    /* ========== 投票按钮 ========== */
    .vote-bar { display: flex; gap: 8px; align-items: center; margin-top: 8px; }
    .vote-btn { display: flex; align-items: center; gap: 4px; padding: 4px 12px; border-radius: 14px; font-size: 12px; border: 1px solid var(--border); background: #fff; cursor: pointer; transition: all 0.15s; }
    .vote-btn:hover { background: var(--bg-secondary); }
    .vote-btn.voted { background: var(--green-light); border-color: var(--green); cursor: default; }
    .vote-btn .vote-count { font-weight: 600; }
    /* ========== 匿名统计面板 ========== */
    .anon-stats-panel { position: absolute; bottom: 20px; right: 20px; z-index: 1000; background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: 10px 16px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); font-size: 13px; }
    .anon-stats-panel .anon-title { font-weight: 600; margin-bottom: 4px; }
    .anon-stats-panel .anon-desc { font-size: 11px; color: var(--text-light); }
    @media (max-width: 900px) {
      .view-list-header { padding: 20px 20px 0; }
      .view-list-toolbar { padding: 12px 20px; }
      .lesson-grid { padding: 16px 20px; grid-template-columns: 1fr; }
    }

    /* ========== 删除仓库确认弹窗 ========== */
    .delete-repo-input { width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px; font-family: inherit; margin-top: 6px; }
    .delete-repo-input:focus { border-color: #cf222e; outline: none; box-shadow: 0 0 0 3px rgba(207,34,46,0.12); }

    /* ========== 仓库设置内联编辑 ========== */
    .repo-edit-btn { font-size: 11px; padding: 2px 8px; border: 1px solid var(--border); border-radius: 4px; background: var(--bg-secondary); color: var(--text-link); cursor: pointer; font-family: inherit; }
    .repo-edit-btn:hover { background: #ddf4ff; }
    .repo-edit-inline { width: 100%; padding: 6px 10px; border: 1px solid #0969da; border-radius: var(--radius); font-size: 13px; font-family: inherit; }
    .repo-edit-actions { display: flex; gap: 6px; margin-top: 6px; }
    .repo-edit-save { padding: 4px 12px; border: none; border-radius: 4px; background: #238636; color: #fff; font-size: 12px; cursor: pointer; font-family: inherit; }
    .repo-edit-cancel { padding: 4px 12px; border: 1px solid var(--border); border-radius: 4px; background: #fff; font-size: 12px; cursor: pointer; font-family: inherit; }
    .repo-topic-tag { display: inline-block; padding: 2px 10px; margin: 2px; background: #ddf4ff; color: #0969da; border-radius: 12px; font-size: 12px; font-weight: 500; }
    .repo-topic-add { display: inline-block; padding: 2px 10px; margin: 2px; background: var(--bg-secondary); border: 1px dashed var(--border); border-radius: 12px; font-size: 12px; color: var(--text-link); cursor: pointer; }

    /* 仓库操作栏额外按钮 */
    .btn-settings { padding: 4px 12px; border: 1px solid var(--border); border-radius: 6px; background: #fff; font-size: 12px; cursor: pointer; font-family: inherit; color: var(--text); }
    .btn-settings:hover { background: var(--bg-secondary); }
    .btn-delete-repo { padding: 4px 12px; border: 1px solid #ffa39e; border-radius: 6px; background: #fff1f0; font-size: 12px; cursor: pointer; font-family: inherit; color: #cf222e; }
    .btn-delete-repo:hover { background: #ffe2e0; }

    /* ========== 文件行操作按钮 ========== */
    .file-row-actions { display: flex; gap: 2px; opacity: 0; transition: opacity 0.15s; }
    .repo-file-item:hover .file-row-actions { opacity: 1; }
    .file-action-btn { padding: 2px 6px; font-size: 12px; border: 1px solid transparent; border-radius: 4px; background: none; cursor: pointer; font-family: inherit; color: var(--text-light); }
    .file-action-btn:hover { background: var(--bg-secondary); color: var(--text); border-color: var(--border); }
    .file-action-btn.danger:hover { color: #cf222e; background: #fff1f0; border-color: #ffa39e; }

    /* ========== 星级评分 ========== */
    .star-rating { display: inline-flex; gap: 2px; cursor: pointer; }
    .star-rating .star { font-size: 20px; color: #d0d7de; transition: color 0.15s, transform 0.15s; }
    .star-rating .star.active { color: #f5a623; }
    .star-rating .star:hover { transform: scale(1.2); color: #f5a623; }
    .star-rating.readonly .star { cursor: default; }
    .star-rating.readonly .star:hover { transform: none; }
    .rating-summary { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
    .rating-avg { font-size: 28px; font-weight: 700; color: #f5a623; }
    .rating-count { font-size: 12px; color: var(--text-light); }
    .rating-comment { width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px; font-family: inherit; resize: vertical; min-height: 50px; margin-top: 8px; }

    /* ========== 热度榜 ========== */
    .hot-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--border); }
    .hot-tab { padding: 8px 16px; font-size: 13px; border: none; background: none; color: var(--text-light); cursor: pointer; font-family: inherit; border-bottom: 2px solid transparent; transition: all 0.15s; }
    .hot-tab:hover { color: var(--text); border-bottom-color: #d0d7de; }
    .hot-tab.active { color: #cf222e; font-weight: 600; border-bottom-color: #cf222e; }
    .hot-card { border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; background: #fff; transition: box-shadow 0.15s; cursor: pointer; }
    .hot-card:hover { box-shadow: var(--shadow); }
    .hot-card-rank { font-size: 28px; font-weight: 800; color: #d0d7de; }
    .hot-card-rank.r1 { color: #f5a623; } .hot-card-rank.r2 { color: #8899aa; } .hot-card-rank.r3 { color: #cd7f32; }
    .hot-card-title { font-size: 15px; font-weight: 600; color: var(--text-link); margin: 4px 0; }
    .hot-card-meta { font-size: 12px; color: var(--text-light); display: flex; gap: 10px; flex-wrap: wrap; }
    .hot-card-score { display: flex; align-items: center; gap: 4px; font-size: 13px; color: #f5a623; font-weight: 600; }

    /* ========== 关联仓库面板 ========== */
    .related-repo-card { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 10px; background: #fff; transition: box-shadow 0.15s; }
    .related-repo-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
    .related-repo-icon { font-size: 24px; flex-shrink: 0; }
    .related-repo-body { flex: 1; min-width: 0; }
    .related-repo-name { font-size: 15px; font-weight: 600; color: var(--text-link); word-break: break-all; }
    .related-repo-name a { color: inherit; text-decoration: none; }
    .related-repo-name a:hover { text-decoration: underline; }
    .related-repo-desc { font-size: 13px; color: var(--text); margin-top: 4px; }
    .related-repo-meta { font-size: 12px; color: var(--text-light); margin-top: 6px; display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
    .related-repo-badge { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 500; }
    .related-badge-ref { background: #ddf4ff; color: #0969da; }
    .related-badge-dep { background: #fff8c5; color: #9a6700; }
    .related-badge-fork { background: #dafbe1; color: #1a7f37; }
    .related-badge-collab { background: #f3e8ff; color: #8250df; }
    .related-repo-type { display: inline-block; padding: 2px 10px; border-radius: 12px; font-size: 12px; font-weight: 600; background: #f6f8fa; color: #57606a; }
    .related-repo-type.type-错题本 { background: #fff1f0; color: #cf222e; }
    .related-repo-type.type-教案库 { background: #ddf4ff; color: #0969da; }
    .related-repo-type.type-习题集 { background: #dafbe1; color: #1a7f37; }
    .related-repo-type.type-资源包 { background: #f3e8ff; color: #8250df; }
    .related-repo-empty { text-align: center; padding: 40px 20px; color: var(--text-light); }
    .related-repo-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
    .related-repo-header-info { flex: 1; }
    .related-repo-header-info h3 { margin: 0 0 4px 0; font-size: 17px; }
    .related-repo-header-info .meta { font-size: 12px; color: var(--text-light); display: flex; gap: 10px; flex-wrap: wrap; }
    .related-repo-tags { display: flex; gap: 4px; flex-wrap: wrap; }
    .related-repo-tag { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; background: #f6f8fa; color: #57606a; }

    /* ========== 仓库 Topics 筛选 ========== */
    .topic-filter-bar { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; align-items: center; }
    .topic-filter-tag { padding: 3px 12px; border-radius: 14px; font-size: 12px; border: 1px solid var(--border); background: #fff; cursor: pointer; transition: all 0.15s; white-space: nowrap; }
    .topic-filter-tag:hover { background: var(--bg-secondary); border-color: #0969da; }
    .topic-filter-tag.active { background: #0969da; color: #fff; border-color: #0969da; }
    .topic-filter-clear { padding: 3px 12px; font-size: 12px; color: var(--text-light); cursor: pointer; border: none; background: none; }
    .topic-filter-clear:hover { color: #cf222e; text-decoration: underline; }
    .rc-topics { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 6px; }
    .rc-topic-tag { padding: 1px 7px; border-radius: 10px; font-size: 10px; background: #f6f8fa; color: #57606a; white-space: nowrap; }

    /* ========== 标签云/标签墙 ========== */
    .tag-cloud-wrap { max-width: 1100px; margin: 0 auto; padding: 20px 16px; }
    .tag-cloud-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 20px; }
    .tag-cloud-header h1 { font-size: 24px; font-weight: 700; margin: 0; }
    .tag-cloud-container { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; padding: 20px 0; }
    .tag-cloud-item { display: inline-block; padding: 6px 16px; border-radius: 20px; font-size: 14px; cursor: pointer; transition: all 0.2s; border: 1px solid transparent; white-space: nowrap; }
    .tag-cloud-item:hover { transform: scale(1.08); box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
    .tag-cloud-size-s { font-size: 12px; padding: 4px 10px; }
    .tag-cloud-size-m { font-size: 15px; padding: 6px 14px; }
    .tag-cloud-size-l { font-size: 18px; padding: 8px 18px; font-weight: 600; }
    .tag-cloud-size-xl { font-size: 22px; padding: 10px 22px; font-weight: 700; }
    .tag-cloud-count { font-size: 10px; color: var(--text-light); margin-left: 2px; }
    .tag-cloud-filtered { margin: 12px 0; font-size: 13px; color: var(--text-link); }
    .tag-cloud-filtered button { margin-left: 8px; font-size: 12px; background: none; border: none; color: var(--text-light); cursor: pointer; }
    .tag-cloud-filtered button:hover { color: #cf222e; }

    /* ========== 导入标签弹窗 ========== */
    .import-topics-modal-body { max-height: 300px; overflow-y: auto; }
    .import-topics-source-list { display: flex; flex-direction: column; gap: 6px; }
    .import-topics-source-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer; transition: background 0.15s; }
    .import-topics-source-item:hover { background: var(--bg-secondary); }
    .import-topics-source-item.selected { border-color: #0969da; background: #ddf4ff; }
    .import-topics-preview { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 12px; padding: 10px; background: #f6f8fa; border-radius: var(--radius); min-height: 32px; }
    .import-topics-preview .about-topic { cursor: default; }

    /* ========== P1: 标签管理面板 ========== */
    .label-hot-section { margin-bottom: 4px; }
    .label-hot-list { display: flex; flex-wrap: wrap; gap: 6px; }
    .label-hot-chip { display: inline-block; padding: 3px 10px; border-radius: 14px; font-size: 11px; cursor: pointer; transition: transform 0.15s,box-shadow 0.15s; }
    .label-hot-chip:hover { transform: scale(1.06); box-shadow: 0 2px 6px rgba(0,0,0,0.12); }
    .label-manager-list { display: flex; flex-direction: column; gap: 6px; }
    .label-manager-item { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 4px; background: #fff; }
    .label-manager-swatch { display: inline-block; padding: 2px 10px; border-radius: 10px; font-size: 12px; font-weight: 600; color: #fff; min-width: 50px; text-align: center; }
    .label-manager-desc { flex: 1; font-size: 11px; color: var(--text-light); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .label-manager-actions { display: flex; gap: 4px; }
    .label-manager-actions button { background: none; border: 1px solid var(--border); border-radius: 4px; padding: 2px 8px; cursor: pointer; font-size: 12px; transition: background 0.15s; }
    .label-manager-actions button:hover { background: var(--bg-secondary); }

    /* ========== P2: 标签合并 ========== */
    .label-merge-select { width: 100%; padding: 6px; border: 1px solid var(--border); border-radius: 4px; font-size: 13px; }

    /* ========== P3: 元数据 ========== */
    .wisedom-editor { width: 100%; height: 360px; font-family: Consolas, Monaco, monospace; font-size: 13px; padding: 10px; border: 1px solid var(--border); border-radius: 4px; resize: vertical; }

    /* ========== 信用面板 ========== */
    .dual-panel { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
    @media (max-width: 700px) { .dual-panel { grid-template-columns: 1fr; } }
    .credit-card { background: linear-gradient(135deg, #f8f9fa 0%, #f0f4ff 100%); border: 2px solid #d0d7de; border-radius: var(--radius); padding: 20px; }
    .credit-header { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
    .credit-circle { width: 64px; height: 64px; border-radius: 50%; border: 4px solid; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: #fff; }
    .credit-info { flex: 1; min-width: 140px; }
    .credit-info h3 { font-size: 16px; margin-bottom: 4px; }
    .credit-level-badge { display: inline-block; padding: 2px 10px; border-radius: 10px; font-size: 11px; font-weight: 600; color: #fff; margin-bottom: 6px; }
    .credit-permission { font-size: 12px; color: var(--text-light); margin-bottom: 4px; }
    .credit-streak { font-size: 12px; color: #bf8700; font-weight: 600; }
    .credit-violation { font-size: 11px; color: #cf222e; }
    .credit-progress-bar { width: 100%; height: 6px; background: #e8e8e8; border-radius: 3px; margin: 14px 0 4px; overflow: hidden; }
    .credit-progress-fill { height: 100%; border-radius: 3px; transition: width 0.6s ease; }
    .credit-progress-labels { display: flex; justify-content: space-between; font-size: 10px; color: var(--text-light); padding: 0 2px; margin-bottom: 10px; }
    .credit-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
    .credit-appeal-btn { padding: 6px 14px; border: 1px solid #d0d7de; border-radius: 6px; background: #fff; font-size: 12px; cursor: pointer; transition: background 0.15s; }
    .credit-appeal-btn:hover:not(:disabled) { background: #f3f4f6; }
    .credit-appeal-btn:disabled { opacity: 0.5; cursor: not-allowed; }
    .credit-learn-btn { padding: 6px 14px; border: 1px solid #0969da; border-radius: 6px; background: #ddf4ff; color: #0969da; font-size: 12px; cursor: pointer; transition: background 0.15s; }
    .credit-learn-btn:hover:not(:disabled) { background: #b5e4ff; }
    .credit-learn-btn:disabled { opacity: 0.5; cursor: not-allowed; }

    /* ========== 声望消费 ========== */
    .rep-spend-section { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 20px; margin-bottom: 16px; }
    .rep-spend-section h4 { font-size: 14px; font-weight: 600; margin-bottom: 10px; }
    .rep-spend-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; }
    .rep-spend-btn { padding: 8px 12px; border: 1px solid #d0d7de; border-radius: 6px; background: #f6f8fa; font-size: 12px; cursor: pointer; text-align: left; transition: background 0.15s, border-color 0.15s; }
    .rep-spend-btn:hover:not(:disabled) { background: #e8f0fe; border-color: #0969da; }
    .rep-spend-btn:disabled { opacity: 0.4; cursor: not-allowed; }
    .rep-spend-btn span { display: block; font-size: 10px; color: var(--text-light); margin-top: 2px; }

    /* ========== 规则说明卡片 ========== */
    .rep-rules-card { background: #fffbe6; border: 1px solid #ffe58f; border-radius: var(--radius); padding: 14px 18px; }

    /* ========== 园丁失职分面板 ========== */
    .dm-card { background: linear-gradient(135deg, #fafbfc 0%, #fff8f5 100%); border: 2px solid #f0d0c0; border-radius: var(--radius); padding: 20px; margin-bottom: 16px; }
    .dm-header { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
    .dm-badge { width: 64px; height: 64px; border-radius: 50%; border: 4px solid; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: #fff; }
    .dm-info { flex: 1; min-width: 140px; }
    .dm-info h3 { font-size: 16px; margin-bottom: 4px; }
    .dm-level-badge { display: inline-block; padding: 2px 10px; border-radius: 10px; font-size: 11px; font-weight: 600; color: #fff; margin-bottom: 6px; }
    .dm-gardener-perm { font-size: 12px; color: var(--text-light); margin-bottom: 4px; }
    .dm-link-note { font-size: 11px; color: #cf222e; margin-top: 2px; }
    .dm-progress-bar { width: 100%; height: 6px; background: #e8e8e8; border-radius: 3px; margin: 14px 0 4px; overflow: hidden; }
    .dm-progress-fill { height: 100%; border-radius: 3px; transition: width 0.6s ease; }
    .dm-progress-labels { display: flex; justify-content: space-between; font-size: 10px; padding: 0 2px; margin-bottom: 10px; }
    .dm-threshold-info { font-size: 11px; color: #cf222e; background: #ffebe9; border: 1px solid #ffc1ba; border-radius: 6px; padding: 6px 10px; margin: 8px 0; display: flex; gap: 8px; flex-wrap: wrap; }
    .dm-threshold-info span { background: #fff; padding: 2px 6px; border-radius: 3px; font-weight: 600; }
    .dm-history { margin: 10px 0; }
    .dm-history h4 { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
    .dm-recovery-section { background: #f6f8fa; border: 1px solid #d0d7de; border-radius: var(--radius); padding: 14px 16px; margin-top: 12px; }
    .dm-recovery-section h4 { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
    .dm-recovery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px; }
    .dm-recovery-btn { padding: 8px 12px; border: 1px solid #d0d7de; border-radius: 6px; background: #fff; font-size: 12px; cursor: pointer; text-align: left; transition: background 0.15s, border-color 0.15s; }
    .dm-recovery-btn:hover:not(:disabled) { background: #f0f9ff; border-color: #0969da; }
    .dm-recovery-btn:disabled { opacity: 0.4; cursor: not-allowed; }
    .dm-recovery-btn span { display: block; font-size: 10px; color: var(--text-light); margin-top: 2px; }
    .dm-cooldowns { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 11px; color: #bf8700; }
    .dm-cooldowns span { background: #fffbe6; padding: 3px 8px; border-radius: 4px; border: 1px solid #ffe58f; }