:root{--bg-color:#0f172a;--card-bg:#1e293b;--text-main:#f8fafc;--text-muted:#94a3b8;--border-color:rgba(255,255,255,0.08);--accent-keycloak:#4f46e5;--accent-api:#06b6d4;--accent-superset:#0ea5e9;--accent-hop:#10b981;--accent-kestra:#f43f5e;--accent-grafana:#f59e0b;--accent-pgbouncer:#64748b}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;background-color:var(--bg-color);color:var(--text-main);margin:0;padding:0;min-height:100vh}.portal-header{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem 2rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:3rem;background:linear-gradient(180deg,#1e293b4d,transparent)}.brand-container{display:flex;align-items:center;gap:1.25rem;margin-bottom:.5rem}.portal-logo{width:56px;height:56px;object-fit:contain;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3))}.portal-title{font-size:2.5rem;font-weight:700;color:#ffffff;margin:0;letter-spacing:-.025em}.portal-subtitle{font-size:1.15rem;color:var(--text-muted);max-width:600px;margin:.5rem 0 0;line-height:1.5}.container{max-width:1200px;margin:0 auto;padding:0 2rem 4rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));grid-gap:1.5rem;gap:1.5rem}.card{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.75rem;text-decoration:none;color:inherit;display:flex;flex-direction:column;justify-content:space-between;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.card:hover{transform:translateY(-4px);box-shadow:0 12px 20px -10px rgba(0,0,0,.5)}.card.keycloak:hover{border-color:var(--accent-keycloak)}.card.api:hover{border-color:var(--accent-api)}.card.superset:hover{border-color:var(--accent-superset)}.card.hop:hover{border-color:var(--accent-hop)}.card.kestra:hover{border-color:var(--accent-kestra)}.card.grafana:hover{border-color:var(--accent-grafana)}.card.pgbouncer:hover{border-color:var(--accent-pgbouncer)}.card-title{font-size:1.25rem;font-weight:600;margin-bottom:.75rem;color:#ffffff}.card-desc{font-size:.95rem;line-height:1.6;margin-bottom:1.5rem}.badge,.card-desc{color:var(--text-muted)}.badge{align-self:flex-start;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.25rem .75rem;border-radius:9999px;background-color:rgba(255,255,255,.06)}