*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#fafafa;--bg2:#ffffff;--bg3:#f3f4f6;--bg4:#e5e7eb;
  --text:#1a1a1a;--text2:#4b5563;--text3:#9ca3af;
  --accent:#10b981;--accent2:#059669;--accent-soft:rgba(16,185,129,.08);
  --border:#e5e7eb;--border2:#d1d5db;
}
html{scroll-behavior:smooth}
body{
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  background:var(--bg);color:var(--text);
  line-height:1.6;-webkit-font-smoothing:antialiased;
  min-height:100vh;display:flex;flex-direction:column;
}
a{color:inherit;text-decoration:none}

/* header */
.site-header{
  padding:18px 48px;display:flex;align-items:center;justify-content:space-between;
  border-bottom:1px solid var(--border);background:var(--bg);
  position:sticky;top:0;z-index:10;
}
.brand{display:flex;align-items:center;gap:10px}
.brand-logo{
  width:32px;height:32px;border-radius:7px;background:var(--accent);
  display:flex;align-items:center;justify-content:center;color:#fff;
}
.brand-logo svg{width:17px;height:17px}
.brand-text{font-size:17px;font-weight:600;letter-spacing:-0.3px}
.site-nav{display:flex;align-items:center;gap:24px}
.site-nav a{font-size:13px;color:var(--text3);transition:color .2s}
.site-nav a:hover{color:var(--text)}

/* main */
.page-main{
  flex:1;width:100%;max-width:1080px;margin:0 auto;
  padding:56px 48px 72px;
}
.page-head{margin-bottom:32px}
.page-head h1{
  font-family:'Noto Serif SC','Inter',serif;
  font-size:34px;font-weight:700;letter-spacing:2px;margin-bottom:8px;
}
.page-sub{font-size:14px;color:var(--text3);letter-spacing:1px}
.page-summary{font-size:13px;color:var(--text3);margin:-16px 0 24px}

/* album grid */
.album-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  gap:22px;
}
.album-card{
  position:relative;aspect-ratio:1/1;border-radius:14px;overflow:hidden;
  background:var(--bg3);display:block;
  transition:transform .2s ease,box-shadow .2s ease;
}
.album-card:hover{
  transform:translateY(-3px);
  box-shadow:0 12px 28px rgba(0,0,0,.14);
}
.album-card img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .35s ease;
}
.album-card:hover img{transform:scale(1.04)}
.overlay{
  position:absolute;left:0;right:0;bottom:0;
  padding:42px 16px 14px;
  background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.42) 48%,rgba(0,0,0,.86) 100%);
  color:#fff;
}
.card-name{
  font-size:15px;font-weight:600;letter-spacing:-0.2px;line-height:1.4;color:#fff;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  text-shadow:0 1px 3px rgba(0,0,0,.3);
}
.card-artist{
  font-size:12.5px;color:rgba(255,255,255,.85);margin-top:3px;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
.card-meta{
  margin-top:9px;display:flex;align-items:center;justify-content:space-between;
}
.card-date{font-size:12px;color:rgba(255,255,255,.72)}
.card-arrow{
  width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.18);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:13px;flex-shrink:0;
  transition:background .2s ease;
}
.album-card:hover .card-arrow{background:var(--accent)}
.card-note{
  position:absolute;top:10px;right:10px;z-index:1;
  font-size:11px;color:#fff;background:rgba(0,0,0,.55);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  border-radius:999px;padding:3px 10px;max-width:70%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* empty / error */
.status{
  padding:56px 24px;text-align:center;color:var(--text3);
  border:1px dashed var(--border2);border-radius:14px;background:var(--bg2);
}
.status .status-icon{font-size:30px;margin-bottom:12px}
.status h2{font-size:17px;font-weight:600;color:var(--text2);margin-bottom:8px}
.status p{font-size:13px;line-height:1.8;max-width:480px;margin:0 auto}
.status code{
  font-family:'SF Mono',ui-monospace,Menlo,monospace;font-size:12px;
  background:var(--bg3);border:1px solid var(--border);border-radius:5px;padding:1px 6px;
}

/* footer */
.site-footer{
  border-top:1px solid var(--border);padding:22px 48px;text-align:center;
}
.site-footer p{font-size:12px;color:var(--text3)}

@media (max-width:720px){
  .site-header{padding:16px 20px}
  .page-main{padding:36px 20px 56px}
  .site-footer{padding:20px}
  .page-head h1{font-size:28px}
  .album-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
}
