/* Thomas-AI.space · 代码仓库页样式（沿用 journal.css 的变量与动漫风） */
.code-page .wrap{max-width:980px}
.gh-profile{display:flex;gap:24px;align-items:flex-start;padding:34px 0 26px}
.gh-avatar{flex:none;width:112px;height:112px;border-radius:28px;border:3px solid var(--card);box-shadow:var(--shadow);object-fit:cover;animation:bob 5.5s ease-in-out infinite}
.gh-profile__body{flex:1;min-width:0}
.gh-profile h1{margin:0;font-size:38px;line-height:1.2}
.gh-intro{margin:6px 0 10px;color:var(--muted);font-size:17px}
.gh-login{margin:0;font-size:16px}
.gh-login span{color:var(--faint)}
.gh-bio{margin:6px 0 0;color:var(--muted);font-size:15px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.gh-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px}
.gh-btn{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 16px;border:1.5px solid var(--line);border-radius:999px;background:var(--card);color:var(--fg);font-family:inherit;font-size:14.5px;font-weight:600;cursor:pointer;text-decoration:none;transition:transform .3s var(--bounce),border-color .2s,color .2s}
.gh-btn:hover{transform:translateY(-2px);border-color:var(--accent);color:var(--accent)}
.gh-btn.primary{border-color:var(--accent);background:var(--accent);color:#fff}
.gh-btn.primary:hover{color:#fff;box-shadow:var(--shadow)}
.gh-btn.sm{height:30px;padding:0 12px;font-size:13px}
.gh-follow{color:var(--faint);font-size:14px}
.gh-stats .stat b.small{font-size:24px;line-height:1.5}
.gh-block{margin-top:30px}
.gh-block > .sub{margin-top:0}
.lang-bar{display:flex;height:12px;margin:10px 0;overflow:hidden;border-radius:999px;background:var(--soft)}
.lang-bar span{display:block;height:100%;transition:width .8s var(--ease)}
.lang-bar span+span{border-left:2px solid var(--card)}
.lang-legend{display:flex;flex-wrap:wrap;gap:6px 16px;color:var(--fg);font-size:14px}
.lang-legend i,.repo-card__meta i,.gh-langs i{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%;vertical-align:0}
.lang-legend small{color:var(--faint)}
.gh-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px}
.gh-toolbar .sub{margin:0 auto 0 0}
.gh-search{width:260px;max-width:100%;height:40px;margin:0}
.gh-select{height:40px;padding:0 12px;border:1.5px solid var(--line);border-radius:12px;background:var(--card);color:var(--fg);font:inherit;font-size:14px;outline:none}
.gh-langs{margin:6px 0 14px}
.gh-langs a.active{border-color:var(--accent);background:var(--accent);color:#fff}
.gh-langs a.active small{color:rgba(255,255,255,.8)}
.repo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.repo-card{display:flex;flex-direction:column;gap:8px;padding:18px 20px;border:1.5px solid var(--line);border-radius:20px;background:var(--card);color:var(--fg);text-decoration:none;transition:transform .4s var(--bounce),border-color .25s,box-shadow .3s}
.repo-card:hover{transform:translateY(-5px);border-color:var(--accent);box-shadow:var(--shadow)}
.repo-card__head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.repo-card__head b{color:var(--accent);font-size:19px;word-break:break-all}
.repo-icon{font-size:18px}
.repo-card__desc{margin:0;color:var(--muted);font-size:15px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.repo-card__meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:auto;color:var(--faint);font-size:13.5px}
.repo-topics{display:flex;flex-wrap:wrap;gap:6px}
.repo-topics span{padding:1px 10px;border-radius:999px;background:color-mix(in srgb,var(--accent2) 13%,var(--card));color:var(--accent2);font-size:12.5px}
.gh-badge{padding:1px 9px;border:1px solid var(--line);border-radius:999px;color:var(--faint);font-size:12px;font-weight:500}
.gh-badge.pin{border-color:var(--accent);color:var(--accent)}
.commit-list{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.commit-list > *{min-width:0}
.repo-grid > *{min-width:0}
.commit-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--fg);text-decoration:none;transition:transform .3s var(--bounce),border-color .2s}
.commit-row:hover{transform:translateX(4px);border-color:var(--accent)}
.commit-avatar{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:11px;background:var(--soft);color:var(--accent);font-weight:600;object-fit:cover}
.commit-main{display:flex;flex-direction:column;flex:1;min-width:0}
.commit-title{overflow:hidden;font-size:15.5px;text-overflow:ellipsis;white-space:nowrap}
.commit-meta{color:var(--faint);font-size:13px}
.commit-repo{margin-right:6px;padding:0 8px;border-radius:999px;background:var(--soft);color:var(--accent2);font-weight:500}
.commit-sha{flex:none;padding:2px 8px;border-radius:8px;background:var(--soft);color:var(--muted);font-size:12.5px;cursor:default}
.commit-sha[data-copy]{cursor:pointer}
.commit-day{margin:22px 0 8px;color:var(--muted);font-size:15px;font-weight:600}
.repo-hero{padding:16px 0 6px}
.repo-hero h1{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0;font-size:34px;line-height:1.2;word-break:break-all}
.repo-desc{margin:8px 0 10px;color:var(--muted);font-size:17px}
.repo-stats{display:flex;flex-wrap:wrap;gap:8px 18px;margin:12px 0 4px;color:var(--muted);font-size:14.5px}
.repo-stats b{color:var(--fg)}
.repo-tabs{display:flex;gap:6px;margin:26px 0 0;padding:5px;border:1px solid var(--line);border-radius:16px;background:var(--card);width:fit-content;max-width:100%;overflow-x:auto}
.repo-tab{padding:8px 16px;border-radius:12px;color:var(--muted);font-size:15px;font-weight:600;white-space:nowrap;text-decoration:none;transition:background .2s,color .2s}
.repo-tab:hover{color:var(--fg)}
.repo-tab.active{background:var(--accent);color:#fff}
.tab-body{padding-top:16px;min-height:200px}
.tab-body.show{animation:panelIn .45s var(--ease)}
.code-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}
.code-head .gh-select{height:34px;font-size:13.5px}
.code-note{color:var(--faint);font-size:13.5px}
.code-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:15px}
.code-crumbs a{color:var(--accent2)}
.code-crumbs a:hover{text-decoration:underline}
.code-crumbs span{color:var(--faint)}
.tree{overflow:hidden;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.tree-row{display:flex;align-items:center;gap:10px;padding:9px 16px;border-top:1px solid var(--line);color:var(--fg);font-size:15px;text-decoration:none;transition:background .15s}
.tree-row:first-child{border-top:0}
.tree-row:hover{background:var(--soft)}
.tree-row:hover .tree-name{color:var(--accent)}
.tree-ico{flex:none;width:22px;text-align:center}
.tree-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree-size{color:var(--faint);font-size:12.5px}
.tree-readme{margin-top:18px}
.file-box{overflow:hidden;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.file-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--soft)}
.file-name{margin-right:auto;font-weight:600;word-break:break-all}
.file-info{color:var(--faint);font-size:13px}
.code-view{display:flex;max-height:72vh;overflow:auto;font:13.5px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.code-view pre{margin:0;padding:14px 0;font:inherit;white-space:pre;tab-size:4}
.code-view .gutter{position:sticky;left:0;flex:none;padding:14px 12px 14px 16px;border-right:1px solid var(--line);background:var(--card);color:var(--faint);text-align:right;user-select:none}
.code-view .code{flex:1;padding-left:16px;padding-right:16px}
.code-view code{display:block;padding:0;background:none;font:inherit}
.file-image{display:grid;place-items:center;padding:20px;background:repeating-conic-gradient(var(--soft) 0 25%,var(--card) 0 50%) 0 0/20px 20px}
.file-image img{max-width:100%;max-height:70vh}
.commit-detail{padding:14px 0 4px}
.commit-detail h2{margin:0;font-size:24px;line-height:1.4;word-break:break-word}
.commit-body{margin:10px 0;padding:12px 14px;border-radius:12px;background:var(--soft);color:var(--muted);font:14px/1.6 ui-monospace,Menlo,monospace;white-space:pre-wrap}
.commit-info{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0;color:var(--muted);font-size:14.5px}
.diff-summary{margin:6px 0 16px;color:var(--muted);font-size:15px}
b.add,.diff-count .add{color:#2da44e}
b.del,.diff-count .del{color:#cf222e}
.diff-file{margin-bottom:12px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--card)}
.diff-file summary{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--soft);cursor:pointer;list-style:none}
.diff-file summary::-webkit-details-marker{display:none}
.diff-file summary::before{content:"▸";color:var(--faint);transition:transform .2s}
.diff-file[open] summary::before{transform:rotate(90deg)}
.diff-name{flex:1;min-width:0;overflow:hidden;font:13.5px ui-monospace,Menlo,monospace;text-overflow:ellipsis;white-space:nowrap}
.diff-status{flex:none;padding:0 8px;border-radius:999px;font-size:12px}
.diff-status.added{background:rgba(45,164,78,.15);color:#2da44e}
.diff-status.removed{background:rgba(207,34,46,.13);color:#cf222e}
.diff-status.modified,.diff-status.changed{background:color-mix(in srgb,var(--accent2) 15%,transparent);color:var(--accent2)}
.diff-status.renamed{background:rgba(191,135,0,.15);color:#bf8700}
.diff-count{flex:none;font-size:13px}
pre.diff{margin:0;max-height:520px;overflow:auto;font:13px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}
.dl{display:block;padding:0 14px;white-space:pre}
.dl.add{background:rgba(45,164,78,.13)}
.dl.del{background:rgba(207,34,46,.11)}
.dl.hunk{background:color-mix(in srgb,var(--accent2) 10%,transparent);color:var(--accent2)}
.gh-markdown{padding:24px 28px;border:1px solid var(--line);border-radius:18px;background:var(--card);font-size:16px;line-height:1.8;overflow-wrap:anywhere}
.gh-markdown h1,.gh-markdown h2,.gh-markdown h3{margin:1.4em 0 .6em;line-height:1.35}
.gh-markdown h1{font-size:28px}.gh-markdown h2{font-size:23px;padding-bottom:6px;border-bottom:1px dashed var(--line)}.gh-markdown h3{font-size:19px}
.gh-markdown > :first-child,.gh-markdown article > :first-child,.gh-markdown .markdown-heading:first-child h1{margin-top:0}
.gh-markdown a{color:var(--accent2);text-decoration:underline;text-underline-offset:3px}
.gh-markdown img{max-width:100%;height:auto;border-radius:8px}
.gh-markdown code{padding:.12em .38em;border-radius:6px;background:var(--soft);font:.87em ui-monospace,Menlo,monospace}
.gh-markdown pre{overflow:auto;padding:14px 16px;border-radius:12px;background:var(--soft);font-size:13.5px;line-height:1.6}
.gh-markdown pre code{padding:0;background:none}
.gh-markdown table{width:100%;margin:1em 0;border-collapse:collapse;font-size:14.5px;display:block;overflow-x:auto}
.gh-markdown th,.gh-markdown td{padding:8px 12px;border:1px solid var(--line)}
.gh-markdown th{background:var(--soft)}
.gh-markdown blockquote{margin:1em 0;padding:.4em 1em;border-left:4px solid var(--accent);border-radius:0 12px 12px 0;background:var(--soft);color:var(--muted)}
.gh-markdown .anchor,.gh-markdown .octicon{display:none}
.gh-error{margin-top:30px}
/* 语法高亮：浅色 / 深色两套 */
.hljs-comment,.hljs-quote{color:#8a8f98;font-style:italic}
.hljs-keyword,.hljs-selector-tag,.hljs-type,.hljs-meta .hljs-keyword{color:#c2185b}
.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#2e7d32}
.hljs-number,.hljs-literal,.hljs-symbol,.hljs-bullet{color:#b45309}
.hljs-title,.hljs-title.function_,.hljs-section{color:#1565c0}
.hljs-title.class_,.hljs-built_in{color:#6a1b9a}
.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-property{color:#00838f}
.hljs-tag,.hljs-name{color:#c2185b}
.hljs-meta{color:#7b8794}
.hljs-deletion{color:#cf222e}
:root[data-theme="dark"] .hljs-comment,:root[data-theme="dark"] .hljs-quote{color:#7b8199}
:root[data-theme="dark"] .hljs-keyword,:root[data-theme="dark"] .hljs-selector-tag,:root[data-theme="dark"] .hljs-type,:root[data-theme="dark"] .hljs-tag,:root[data-theme="dark"] .hljs-name{color:#ff8fb1}
:root[data-theme="dark"] .hljs-string,:root[data-theme="dark"] .hljs-regexp,:root[data-theme="dark"] .hljs-addition,:root[data-theme="dark"] .hljs-attribute{color:#a5e3a0}
:root[data-theme="dark"] .hljs-number,:root[data-theme="dark"] .hljs-literal,:root[data-theme="dark"] .hljs-symbol{color:#ffd27a}
:root[data-theme="dark"] .hljs-title,:root[data-theme="dark"] .hljs-title.function_,:root[data-theme="dark"] .hljs-section{color:#7cc4ff}
:root[data-theme="dark"] .hljs-title.class_,:root[data-theme="dark"] .hljs-built_in{color:#c8a8ff}
:root[data-theme="dark"] .hljs-attr,:root[data-theme="dark"] .hljs-variable,:root[data-theme="dark"] .hljs-property{color:#7ee0e8}
@media (max-width:760px){
  .gh-profile{flex-direction:column;align-items:center;text-align:center}
  .gh-actions{justify-content:center}
  .gh-avatar{width:96px;height:96px}
  .gh-profile h1{font-size:30px}
  .repo-grid{grid-template-columns:1fr}
  .gh-search{width:100%}
  .repo-hero h1{font-size:26px}
  .gh-markdown{padding:16px}
  .commit-title{white-space:normal}
  .code-view{font-size:12.5px}
}

/* 人物切换：Thomas | 雅如 */
.who-switch{display:inline-flex;gap:4px;margin:26px 0 -8px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--card);box-shadow:var(--shadow)}
.who-switch a{padding:6px 18px;border-radius:999px;color:var(--muted);font-weight:600;font-size:15px;text-decoration:none;transition:background .25s,color .25s}
.who-switch a:hover{color:var(--accent)}
.who-switch a.on{background:var(--accent);color:#fff}
