:root{--bg: #0f1115;--panel: #171a21;--fg: #e6e8ec;--muted: #9aa3b2;--line: #2a2f3a;--accent: #4f8cff;--accent-strong: #2563eb;--pass: #1b8a3a;--fail: #c0392b;--radius: 8px;--radius-sm: 6px;--input-bg: #0c0e12;--gold: #ffc83d;--gold-strong: #ffd866;--gold-soft: rgba(255, 200, 61, .12);--gold-line: rgba(255, 200, 61, .32);--blue-soft: rgba(79, 140, 255, .12);--on-gold: #1a1407;--accent-line: rgba(79, 140, 255, .4);--pass-text: #5fd07a;--pass-soft: rgba(95, 208, 122, .08);--pass-line: rgba(95, 208, 122, .4);--fail-text: #e07a6e;--elev-1: 0 1px 2px rgba(0, 0, 0, .4);--elev-2: 0 8px 24px rgba(0, 0, 0, .45);--elev-3: 0 24px 60px rgba(0, 0, 0, .55);--panel-2: #1b1f28;--font-serif: ui-serif, Georgia, "Times New Roman", serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font:14px/1.5 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--fg)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0;font-family:var(--font-serif);font-size:24px;font-weight:600;letter-spacing:-.01em}h2{font-size:16px;margin:0 0 8px}.sub{color:var(--muted);font-weight:400;font-size:12px}.meta,.hint{color:var(--muted);font-size:12px;margin:4px 0}.empty{color:var(--muted);padding:12px}svg{display:block}.legend{color:var(--muted);font-size:11px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--input-bg);color:var(--fg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 14px;font:inherit;cursor:pointer;transition:border-color .12s ease,background .12s ease}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-gold,.btn-primary{background:var(--gold);border-color:var(--gold);color:var(--on-gold);font-weight:600}.btn-gold:hover,.btn-primary:hover{border-color:var(--gold);filter:brightness(1.06)}.btn:focus-visible,.btn-gold:focus-visible,.btn-primary:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.btn-lg{padding:11px 20px;font-size:15px}.btn-danger{border-color:var(--fail);color:var(--fail-text)}.btn-danger:hover{background:#c0392b1f}.btn-sm{padding:4px 10px;font-size:12px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{color:var(--muted);font-size:12px}.field input,.field textarea,.field select,input.input,select.input{background:var(--input-bg);color:var(--fg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;font:inherit;width:100%}.field select,select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none' stroke='%239aa3b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}.field select option,select.input option{background:var(--input-bg);color:var(--fg)}.field input:focus,.field textarea:focus,.field select:focus,input.input:focus,select.input:focus{outline:none;border-color:var(--accent)}.error-text{color:var(--fail-text);font-size:12px;margin:4px 0}.callout{background:var(--input-bg);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:12px;margin:12px 0}.callout--warn{border-color:var(--gold-line);background:var(--gold-soft)}.code-block{background:var(--input-bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--fg);white-space:pre-wrap;word-break:break-word;margin:8px 0;overflow-x:auto}.tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;border:1px solid var(--line);color:var(--muted)}.tag--active{border-color:var(--pass);color:var(--pass-text)}.tag--revoked{border-color:var(--fail);color:var(--fail-text)}.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:24px;padding:10px 24px;background:#0f1115f5;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.topbar .brand{display:flex;align-items:center;gap:8px;min-width:0}.topbar .brand-title{font-family:var(--font-serif);font-weight:600;font-size:17px;letter-spacing:-.005em;color:var(--fg)}.topbar .brand-title:hover{text-decoration:none;color:var(--gold-strong)}.topbar .brand-sep{color:var(--muted)}.topbar .brand-project{color:var(--muted);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .nav{display:flex;align-items:center;gap:4px}.topbar .nav a{color:var(--muted);padding:6px 12px;border-radius:var(--radius-sm);font-size:13px;transition:color .12s ease,background .12s ease}.topbar .nav a:hover{color:var(--fg);text-decoration:none;background:#ffffff0d}.topbar .nav a.active{color:var(--gold-strong);background:var(--gold-soft)}.topbar .nav-sub-sep{width:1px;height:16px;margin:0 4px;background:var(--line)}.topbar .actions,.topbar .user{margin-left:auto;display:flex;align-items:center;gap:8px}.topbar .user{gap:12px}.topbar .user-name{color:var(--muted);font-size:13px}.topbar .actions a:hover{text-decoration:none}.role-badge,.vis-badge{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}.role-badge.role-owner{color:var(--gold-strong);border-color:var(--gold-line);background:var(--gold-soft)}.role-badge.role-admin{color:var(--accent);border-color:var(--accent-line);background:var(--blue-soft)}.vis-badge.vis-public{color:var(--pass-text);border-color:var(--pass-line);background:var(--pass-soft)}.vis-badge.vis-private{color:var(--muted)}.panel.card{transition:border-color .15s ease,transform .15s ease}.panel.card:hover{border-color:var(--gold-line);text-decoration:none}.panel.card:hover .card-title{color:var(--gold)}@media(prefers-reduced-motion:no-preference){.panel.card:hover{transform:translateY(-2px)}}
