:root{
  --bg-dark: hsl(248 76% 3%);
  --bg: hsl(250 50% 6%);
  --bg-light: hsl(248 32% 11%);
  --text: hsl(245 100% 100%);
  --text-muted: hsl(246 41% 76%);
  --highlight: hsl(247 19% 45%);
  --border: hsl(248 24% 34%);
  --border-muted: hsl(250 34% 23%);
  --primary: hsl(247 66% 79%);
  --secondary: hsl(61 35% 56%);
  --danger: hsl(9 37% 65%);
  --warning: hsl(52 26% 54%);
  --success: hsl(147 24% 57%);
  --info: hsl(217 40% 66%);
  /* mappings for existing tokens */
  --card: var(--bg-light);
  --muted: var(--text-muted);
  --accent: var(--primary);
  --accent-2: var(--secondary);
}
*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:linear-gradient(180deg,var(--bg),var(--bg-dark));color:var(--text);font:16px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,"Helvetica Neue","Apple Color Emoji","Segoe UI Emoji"}
.container{max-width:1120px;margin:0 auto;padding:24px}
.site-header{position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--bg-dark) 80%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.header-inner{display:flex;align-items:center;justify-content:space-between}
.brand{color:var(--text);text-decoration:none;font-weight:700;font-size:20px;letter-spacing:.2px}
.nav-link{color:var(--muted);text-decoration:none;margin-left:16px}
.nav-link:hover{color:var(--text)}
.site-footer{border-top:1px solid var(--border);margin-top:32px;background:var(--bg-dark);color:var(--muted)}
.footer-inner{display:flex;align-items:center;justify-content:center;padding:24px}

.grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:20px}
@media(min-width:640px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1024px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

.card{background:var(--card);border:1px solid var(--border);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 10px 30px rgba(0,0,0,.3)}
.card-media{position:relative;height:160px;background:var(--bg)}
.card-media img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.75)}
.card-media img.icon{position:absolute;left:16px;bottom:16px;width:56px;height:56px;border-radius:12px;border:1px solid var(--border);box-shadow:0 6px 20px rgba(0,0,0,.5)}
.card-body{padding:16px}
.card-title{font-weight:700;margin:0 0 6px;font-size:18px}
.card-sub{color:var(--muted);font-size:13px;margin-bottom:12px}
.card-actions{display:flex;gap:10px;flex-wrap:wrap}
.btn{appearance:none;border:1px solid transparent;background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 40%, var(--info)));color:var(--bg-dark);border-radius:10px;padding:10px 14px;font-weight:700;cursor:pointer;transition:transform .06s ease,filter .1s ease}
.btn:hover{transform:translateY(-1px);filter:brightness(1.05)}
.btn.secondary{background:transparent;border-color:var(--border);color:var(--text)}
.btn.danger{background:linear-gradient(135deg,var(--danger),color-mix(in oklab,var(--danger) 50%, #ef4444));color:white}
.badge{display:inline-flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--border);color:var(--muted);padding:6px 8px;border-radius:999px;font-size:12px}

.hero{display:flex;gap:18px;align-items:center}
.hero .thumb{width:72px;height:72px;border-radius:16px;border:1px solid var(--border);overflow:hidden}
.hero .thumb img{width:100%;height:100%;object-fit:cover}
.hero .meta .title{font-size:22px;font-weight:800;margin:0}
.hero .meta .sub{color:var(--muted);font-size:13px}

.section{margin-top:22px}
.kicker{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:700;font-size:12px;margin-bottom:8px}
.empty{color:var(--muted);border:1px dashed var(--border);border-radius:12px;padding:18px}

.toast{position:fixed;right:16px;bottom:16px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:12px 14px;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.35);display:none}
.toast.show{display:block}
