/* ── Reset & tokens ── */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#F7F7F9;--bg2:#FFFFFF;--bg3:#F0F1F5;--bg4:#E8E9EF;
  --tx:#0A0A0B;--tx2:#3F3F46;--tx3:#9B9BA4;
  --accent:#0057FF;--accent-mid:rgba(0,87,255,.25);--accent-lo:rgba(0,87,255,.07);
  --amber:#F59E0B;--red:#EF4444;--green:#10B981;
  --line:rgba(0,0,0,.08);--line2:rgba(0,0,0,.05);
  --shadow:0 1px 3px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.06);
  --radius:12px;--radius-sm:8px;
  --font:'Geist',system-ui,sans-serif;
  --mono:'Geist Mono',monospace;
}
[data-theme="dark"]{
  --bg:#0D0E12;--bg2:#1A1B22;--bg3:#22232D;--bg4:#2A2B38;
  --tx:#F8F9FF;--tx2:#8A8FA8;--tx3:#4A4F68;
  --line:rgba(255,255,255,.07);--line2:rgba(255,255,255,.04);
  --shadow:0 1px 3px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.25);
}
body{font-family:var(--font);background:var(--bg);color:var(--tx);min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%;display:block}
button{font-family:var(--font);cursor:pointer;border:none;background:none}
code,pre{font-family:var(--mono)}

/* ── Layout ── */
.page-wrap{max-width:900px;margin:0 auto;padding:0 20px 80px}

/* ── Nav ── */
.nav{display:flex;align-items:center;gap:16px;padding:16px 0 24px;border-bottom:1px solid var(--line);margin-bottom:32px}
.nav-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;color:var(--tx);text-decoration:none}
.nav-logo-mark{width:32px;height:32px;background:var(--accent);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:15px}
.nav-logo em{color:var(--accent);font-style:normal}
.nav-spacer{flex:1}
.nav-theme{width:36px;height:36px;border-radius:8px;border:1px solid var(--line);background:var(--bg2);color:var(--tx2);font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.nav-theme:hover{border-color:var(--accent);color:var(--accent)}
.nav-back{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--tx3);padding:6px 12px;border-radius:6px;border:1px solid var(--line);background:var(--bg2);transition:all .15s}
.nav-back:hover{color:var(--tx);border-color:var(--tx3);text-decoration:none}

/* ── Skeleton / loader ── */
.skeleton{background:linear-gradient(90deg,var(--bg3) 25%,var(--bg4) 50%,var(--bg3) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:6px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.page-loader{padding:60px 0;text-align:center;color:var(--tx3);font-size:14px}
.page-loader .spinner{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto 16px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── Error state ── */
.error-state{text-align:center;padding:80px 20px}
.error-state h2{font-size:24px;font-weight:700;margin-bottom:12px}
.error-state p{color:var(--tx2);margin-bottom:24px}

/* ── Hero card ── */
.repo-hero{background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);padding:28px;margin-bottom:20px;box-shadow:var(--shadow)}
.repo-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px}
.repo-avatar{width:64px;height:64px;border-radius:12px;object-fit:cover;border:2px solid var(--line);flex-shrink:0}
.repo-identity{flex:1;min-width:0}
.repo-owner{font-size:13px;color:var(--tx3);margin-bottom:2px}
.repo-owner a{color:var(--tx3)}
.repo-owner a:hover{color:var(--accent)}
.repo-name{font-size:26px;font-weight:700;letter-spacing:-0.5px;line-height:1.2;margin-bottom:8px;word-break:break-word}
.repo-badges{display:flex;flex-wrap:wrap;gap:6px}
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500;border:1px solid var(--line);background:var(--bg3);color:var(--tx2)}
.badge.lang{background:var(--bg3)}
.badge.hot{color:#EA580C;border-color:rgba(234,88,12,.25);background:rgba(234,88,12,.07)}
.badge.trend{color:var(--accent);border-color:var(--accent-mid);background:var(--accent-lo)}
.badge.new-badge{color:var(--green);border-color:rgba(16,185,129,.25);background:rgba(16,185,129,.07)}
.badge-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.repo-desc{font-size:15px;color:var(--tx2);line-height:1.7;margin-bottom:20px}

/* ── Stats row ── */
.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.stat-card{background:var(--bg3);border-radius:var(--radius-sm);padding:14px;text-align:center}
.stat-val{font-size:20px;font-weight:700;margin-bottom:2px}
.stat-lbl{font-size:11px;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px}
.stat-val.stars{color:var(--amber)}
.stat-val.issues{color:var(--red)}
.stat-val.velocity{color:var(--green)}

/* ── Attention score bar ── */
.score-row{display:flex;align-items:center;gap:12px;padding:16px;background:var(--bg3);border-radius:var(--radius-sm)}
.score-lbl{font-size:12px;font-weight:600;color:var(--tx3);white-space:nowrap;text-transform:uppercase;letter-spacing:.5px;width:120px}
.score-track{flex:1;height:8px;background:var(--bg4);border-radius:4px;overflow:hidden}
.score-fill{height:100%;background:linear-gradient(90deg,var(--accent),#00AAFF);border-radius:4px;width:0;transition:width 0.8s cubic-bezier(.4,0,.2,1)}
.score-num{font-size:18px;font-weight:700;color:var(--accent);width:36px;text-align:right}

/* ── Sections ── */
.section{background:var(--bg2);border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin-bottom:20px;box-shadow:var(--shadow)}
.section-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--tx3);margin-bottom:16px;display:flex;align-items:center;gap:8px}

/* ── Language bar ── */
.lang-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;gap:2px;margin-bottom:12px}
.lang-seg{height:100%;border-radius:2px;transition:opacity .2s}
.lang-seg:hover{opacity:.8}
.lang-legend{display:flex;flex-wrap:wrap;gap:12px}
.lang-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--tx2)}
.lang-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}

/* ── Clone section ── */
.clone-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.clone-label{font-size:11px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;width:44px;flex-shrink:0}
.clone-input{flex:1;background:var(--bg3);border:1px solid var(--line);border-radius:6px;padding:8px 12px;font-size:13px;font-family:var(--mono);color:var(--tx2);outline:none;min-width:0}
.clone-copy{padding:8px 14px;background:var(--accent-lo);border:1px solid var(--accent-mid);border-radius:6px;font-size:12px;font-weight:600;color:var(--accent);transition:all .15s}
.clone-copy:hover{background:var(--accent);color:#fff}
.clone-copy.copied{background:var(--green);border-color:var(--green);color:#fff}
.download-row{display:flex;gap:8px;margin-top:12px}
.dl-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:8px;font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--bg3);color:var(--tx2);transition:all .15s;text-decoration:none}
.dl-btn:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}
.dl-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.dl-btn.primary:hover{background:#0047CC;border-color:#0047CC}

/* ── Topics ── */
.topics{display:flex;flex-wrap:wrap;gap:8px}
.topic{padding:4px 12px;border-radius:20px;background:var(--accent-lo);border:1px solid var(--accent-mid);color:var(--accent);font-size:12px;font-weight:500;cursor:pointer;transition:all .15s}
.topic:hover{background:var(--accent);color:#fff;text-decoration:none}

/* ── README ── */
.readme-body{font-size:14px;line-height:1.8;color:var(--tx2);max-height:600px;overflow:hidden;position:relative}
.readme-body.expanded{max-height:none}
.readme-body h1,.readme-body h2,.readme-body h3{color:var(--tx);margin:20px 0 10px;line-height:1.3}
.readme-body h1{font-size:20px}.readme-body h2{font-size:17px}.readme-body h3{font-size:15px}
.readme-body p{margin-bottom:12px}
.readme-body pre{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:14px;overflow-x:auto;margin:12px 0;font-size:12px}
.readme-body code{background:var(--bg3);padding:2px 6px;border-radius:4px;font-size:12px}
.readme-body pre code{background:none;padding:0}
.readme-body img{max-width:100%;border-radius:8px;margin:8px 0}
.readme-body ul,.readme-body ol{padding-left:20px;margin-bottom:12px}
.readme-body li{margin-bottom:4px}
.readme-body a{color:var(--accent)}
.readme-body blockquote{border-left:3px solid var(--accent-mid);padding-left:14px;color:var(--tx3);margin:12px 0;font-style:italic}
.readme-body table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px}
.readme-body th,.readme-body td{padding:8px 12px;border:1px solid var(--line);text-align:left}
.readme-body th{background:var(--bg3);font-weight:600}
.readme-fade{position:absolute;bottom:0;left:0;right:0;height:100px;background:linear-gradient(transparent,var(--bg2));pointer-events:none}
.readme-expand{display:flex;align-items:center;justify-content:center;margin-top:12px}
.readme-expand-btn{padding:8px 20px;border-radius:8px;border:1px solid var(--line);background:var(--bg3);font-size:13px;font-weight:600;color:var(--tx2);transition:all .15s}
.readme-expand-btn:hover{border-color:var(--accent);color:var(--accent)}

/* ── Actions bar ── */
.actions-bar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.action-btn{display:flex;align-items:center;gap:6px;padding:10px 18px;border-radius:8px;font-size:14px;font-weight:600;border:1px solid var(--line);background:var(--bg2);color:var(--tx2);transition:all .15s;text-decoration:none}
.action-btn:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}
.action-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.action-btn.primary:hover{background:#0047CC;border-color:#0047CC}
.action-btn.bk-active{color:var(--accent);border-color:var(--accent-mid);background:var(--accent-lo)}

/* ── Related ── */
.related-grid{display:flex;flex-direction:column;gap:1px;background:var(--line)}
.related-card{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg2);cursor:pointer;transition:background .15s}
.related-card:first-child{border-radius:var(--radius-sm) var(--radius-sm) 0 0}
.related-card:last-child{border-radius:0 0 var(--radius-sm) var(--radius-sm)}
.related-card:hover{background:var(--bg3)}
.related-av{width:32px;height:32px;border-radius:6px;object-fit:cover;flex-shrink:0}
.related-info{flex:1;min-width:0}
.related-name{font-size:13px;font-weight:600;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.related-desc{font-size:12px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.related-stars{font-size:12px;color:var(--amber);font-weight:600;flex-shrink:0}

/* ── Footer ── */
.page-footer{text-align:center;padding:40px 0 0;border-top:1px solid var(--line);margin-top:40px;color:var(--tx3);font-size:13px}
.page-footer a{color:var(--tx3)}
.page-footer a:hover{color:var(--accent)}

/* ── Toast ── */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--tx);color:var(--bg);padding:10px 20px;border-radius:8px;font-size:13px;font-weight:500;opacity:0;transition:all .25s;z-index:999;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── Responsive ── */
@media(max-width:600px){
  .stats-row{grid-template-columns:repeat(2,1fr)}
  .repo-name{font-size:20px}
  .actions-bar{flex-direction:column}
  .action-btn{justify-content:center}
  .download-row{flex-direction:column}
}
