:root {
  --bg: #0a0e14; --surface: #111820; --surface2: #1a2332;
  --border: #1e3a5f; --accent: #00d4ff; --accent2: #7c3aed;
  --accent3: #10b981; --accent4: #f59e0b; --accent5: #ef4444;
  --text: #e2e8f0; --text-muted: #64748b; --text-dim: #94a3b8;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { background:var(--bg); color:var(--text); font-family:'IBM Plex Sans',sans-serif; min-height:100vh; overflow-x:hidden; }
body::before { content:''; position:fixed; inset:0;
  background-image: linear-gradient(rgba(0,212,255,0.03) 1px,transparent 1px), linear-gradient(90deg,rgba(0,212,255,0.03) 1px,transparent 1px);
  background-size:40px 40px; pointer-events:none; z-index:0; }
.container { max-width:1400px; margin:0 auto; padding:48px 24px; position:relative; z-index:1; }

/* ── Logo bar ─────────────────────────────────────────────────── */
.logo-bar {
  display:flex; align-items:center; gap:16px;
  padding:16px 24px; margin-bottom:40px;
  background:var(--surface); border:1px solid var(--border); border-radius:10px;
}
.logo-bar img { height:44px; max-width:180px; object-fit:contain; }
.logo-bar .logo-placeholder {
  height:44px; min-width:140px; display:flex; align-items:center; justify-content:center;
  border:1px dashed var(--border); border-radius:6px; padding:0 16px;
  font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--text-muted);
  letter-spacing:0.1em; text-transform:uppercase;
}
.logo-bar .logo-divider { width:1px; height:36px; background:var(--border); }
.logo-bar .logo-tagline { font-size:13px; color:var(--text-dim); }

/* ── Lang switcher ────────────────────────────────────────────── */
.lang-switcher { margin-left:auto; display:flex; gap:4px; }
.lang-btn {
  background:var(--surface2); border:1px solid var(--border); border-radius:4px;
  color:var(--text-muted); font-family:'IBM Plex Mono',monospace; font-size:11px;
  font-weight:600; padding:5px 12px; cursor:pointer; transition:all 0.2s; letter-spacing:0.08em;
}
.lang-btn:hover { border-color:var(--accent); color:var(--accent); }
.lang-btn.active { background:var(--accent); border-color:var(--accent); color:#000; }

/* ── Header ───────────────────────────────────────────────────── */
header { margin-bottom:48px; }
.eyebrow { font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.2em; color:var(--accent); text-transform:uppercase; margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.eyebrow::before { content:''; width:24px; height:1px; background:var(--accent); }
h1 { font-size:clamp(28px,4vw,48px); font-weight:700; line-height:1.1; letter-spacing:-0.02em; margin-bottom:16px; }
h1 span { color:var(--accent); }
.subtitle { color:var(--text-dim); font-size:16px; max-width:600px; line-height:1.6; }

/* ── Legend ───────────────────────────────────────────────────── */
.legend { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:48px; padding:20px; background:var(--surface); border:1px solid var(--border); border-radius:8px; }
.legend-title { width:100%; font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.15em; color:var(--text-muted); text-transform:uppercase; margin-bottom:4px; }
.legend-item { display:flex; align-items:center; gap:8px; padding:6px 14px; border-radius:4px; border:1px solid; font-family:'IBM Plex Mono',monospace; font-size:12px; font-weight:600; cursor:pointer; transition:all 0.2s; }
.legend-item:hover { filter:brightness(1.3); transform:translateY(-1px); }
.legend-dot { width:8px; height:8px; border-radius:50%; }

/* ── Cards ────────────────────────────────────────────────────── */
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(360px,1fr)); gap:20px; margin-bottom:56px; }
.card { background:var(--surface); border:1px solid var(--border); border-radius:10px; padding:24px; position:relative; overflow:hidden; transition:all 0.3s; cursor:pointer; }
.card:hover { border-color:var(--accent); transform:translateY(-3px); box-shadow:0 12px 40px rgba(0,212,255,0.08); }
.card-header { display:flex; align-items:flex-start; gap:14px; margin-bottom:16px; }
.card-icon { font-size:28px; line-height:1; flex-shrink:0; }
.card-title { font-size:17px; font-weight:700; margin-bottom:4px; letter-spacing:-0.01em; }
.card-category { font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.15em; color:var(--text-muted); text-transform:uppercase; }
.card-description { font-size:13px; color:var(--text-dim); line-height:1.6; margin-bottom:18px; }
.standards-section { margin-bottom:14px; }
.standards-label { font-family:'IBM Plex Mono',monospace; font-size:9px; letter-spacing:0.15em; color:var(--text-muted); text-transform:uppercase; margin-bottom:8px; }
.tags { display:flex; flex-wrap:wrap; gap:6px; }
.tag { font-family:'IBM Plex Mono',monospace; font-size:11px; font-weight:600; padding:4px 10px; border-radius:4px; border:1px solid; letter-spacing:0.05em; }
.tag.secondary { opacity:0.6; }
.factors { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:14px; padding-top:14px; border-top:1px solid var(--border); }
.factor { display:flex; flex-direction:column; gap:3px; }
.factor-label { font-family:'IBM Plex Mono',monospace; font-size:9px; letter-spacing:0.1em; color:var(--text-muted); text-transform:uppercase; }
.factor-bar { height:4px; background:var(--surface2); border-radius:2px; overflow:hidden; }
.factor-fill { height:100%; border-radius:2px; transition:width 1s ease; }

/* ── Comparison table ─────────────────────────────────────────── */
.table-section { margin-bottom:56px; }
.section-header { margin-bottom:24px; }
.section-title { font-size:22px; font-weight:700; letter-spacing:-0.01em; margin-bottom:4px; }
.section-sub { color:var(--text-muted); font-size:13px; }
.table-wrap { overflow-x:auto; border:1px solid var(--border); border-radius:10px; }
table { width:100%; border-collapse:collapse; font-size:13px; }
thead { background:var(--surface2); }
th { padding:14px 16px; text-align:left; font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.1em; color:var(--text-muted); text-transform:uppercase; white-space:nowrap; border-bottom:1px solid var(--border); }
th:first-child { min-width:160px; }
td { padding:14px 16px; border-bottom:1px solid rgba(30,58,95,0.5); vertical-align:middle; }
tr:last-child td { border-bottom:none; }
tr:hover td { background:rgba(0,212,255,0.02); }
.std-name { font-weight:600; font-size:14px; }
.std-org { font-family:'IBM Plex Mono',monospace; font-size:10px; color:var(--text-muted); margin-top:2px; }
.check { color:var(--accent3); font-size:15px; font-weight:700; }
.partial { color:var(--accent4); font-size:14px; }
.cross { color:var(--text-muted); font-size:14px; }
.pill { display:inline-block; padding:3px 10px; border-radius:20px; font-family:'IBM Plex Mono',monospace; font-size:10px; font-weight:600; }

/* ── Table legend ─────────────────────────────────────────────── */
.table-legend {
  margin-top:16px; padding:16px 20px;
  background:var(--surface); border:1px solid var(--border); border-radius:8px;
  display:flex; flex-wrap:wrap; gap:20px; align-items:center;
}
.table-legend-title { font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.12em; color:var(--text-muted); text-transform:uppercase; width:100%; margin-bottom:2px; }
.tl-item { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-dim); }
.tl-sym { font-size:15px; font-weight:700; min-width:20px; text-align:center; }

/* ── Detail panel ─────────────────────────────────────────────── */
.detail-panel { display:none; position:fixed; right:0; top:0; bottom:0; width:min(500px,100vw); background:var(--surface); border-left:1px solid var(--border); z-index:100; overflow-y:auto; padding:32px; box-shadow:-20px 0 60px rgba(0,0,0,0.5); animation:slideIn 0.3s ease; }
@keyframes slideIn { from{transform:translateX(100%)} to{transform:translateX(0)} }
.panel-close { position:absolute; top:16px; right:16px; width:32px; height:32px; background:var(--surface2); border:1px solid var(--border); border-radius:4px; color:var(--text); font-size:18px; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all 0.2s; }
.panel-close:hover { background:var(--accent5); border-color:var(--accent5); }
.panel-content h2 { font-size:24px; font-weight:700; margin-bottom:6px; margin-top:24px; }
.panel-content .desc { color:var(--text-dim); font-size:14px; line-height:1.7; margin-bottom:20px; }
.panel-std-block { background:var(--surface2); border:1px solid var(--border); border-radius:8px; padding:16px; margin-bottom:12px; }
.panel-std-name { font-weight:700; font-size:14px; margin-bottom:4px; display:flex; align-items:center; gap:8px; }
.panel-std-why { font-size:13px; color:var(--text-dim); line-height:1.6; }
.reqs { margin-top:20px; }
.req-item { display:flex; align-items:flex-start; gap:10px; padding:10px 0; border-bottom:1px solid rgba(30,58,95,0.5); font-size:13px; }
.req-item:last-child { border-bottom:none; }
.req-icon { flex-shrink:0; font-size:14px; }
.req-text { color:var(--text-dim); line-height:1.5; }
.req-text strong { color:var(--text); }

/* ── Colors ───────────────────────────────────────────────────── */
.c-w3c    { color:#00d4ff; border-color:#00d4ff; background:rgba(0,212,255,0.08); }
.c-mdoc   { color:#7c3aed; border-color:#7c3aed; background:rgba(124,58,237,0.08); }
.c-oidc   { color:#10b981; border-color:#10b981; background:rgba(16,185,129,0.08); }
.c-anoncred { color:#f59e0b; border-color:#f59e0b; background:rgba(245,158,11,0.08); }
.c-sd-jwt { color:#f97316; border-color:#f97316; background:rgba(249,115,22,0.08); }
.c-ebsi   { color:#ec4899; border-color:#ec4899; background:rgba(236,72,153,0.08); }
.dot-w3c{background:#00d4ff} .dot-mdoc{background:#7c3aed} .dot-oidc{background:#10b981}
.dot-anoncred{background:#f59e0b} .dot-sd-jwt{background:#f97316} .dot-ebsi{background:#ec4899}
.bar-privacy{background:#f59e0b} .bar-interop{background:#ec4899} .bar-oidc{background:#10b981} .bar-mdoc{background:#7c3aed}

.overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:99; }
