.page-wrap{max-width:1000px;margin:0 auto;padding:2rem 1.5rem 3rem}.page-header{margin-bottom:1.75rem;animation:fade-in-up .5s var(--ease-out) both}.page-title{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;background:linear-gradient(135deg,#a78bfa,#c4b5fd);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.25rem}.page-sub{font-size:.85rem;color:var(--text-4)}.filter-bar{display:flex;gap:.75rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1.5rem;padding:1rem 1.25rem;background:var(--card);border:1px solid var(--border);border-radius:var(--r-xl);animation:fade-in-up .5s var(--ease-out) .1s both}.filter-group{display:flex;flex-direction:column;gap:.3rem}.filter-label{font-size:.7rem;color:var(--text-4);text-transform:uppercase;letter-spacing:.06em;font-weight:600}select{background:var(--base);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text-2);padding:.45rem .65rem;font-size:.82rem;font-family:inherit;outline:none;min-width:130px;transition:border-color var(--dur-fast)}select:focus{border-color:#a78bfa}.btn-filter{background:linear-gradient(135deg,#7c3aed,#a78bfa);color:#fff;border:none;padding:.45rem 1.25rem;border-radius:var(--r-full);font-size:.82rem;font-weight:700;cursor:pointer;transition:transform var(--dur-normal) var(--ease-spring),box-shadow var(--dur-normal);box-shadow:0 2px 8px #7c3aed33}.btn-filter:hover{transform:translateY(-1px);box-shadow:0 4px 16px #7c3aed4d}.count-bar{font-size:.78rem;color:var(--text-4);margin-bottom:1rem}.count-bar span{color:#c4b5fd;font-weight:700}.skeleton-stack{display:flex;flex-direction:column;gap:.75rem}.timeline{position:relative;padding-left:2rem}.timeline:before{content:"";position:absolute;left:.6rem;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#7c3aed,#7c3aed1a)}.tl-entry{position:relative;margin-bottom:1rem;padding:.875rem 1.25rem;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);transition:border-color var(--dur-normal),transform var(--dur-normal),box-shadow var(--dur-normal);animation:fade-in-up .4s var(--ease-out) both}.tl-entry:hover{border-color:#a78bfa4d;transform:translate(4px);box-shadow:var(--shadow-hover)}.tl-entry:before{content:"";position:absolute;left:-1.65rem;top:1.1rem;width:12px;height:12px;border-radius:var(--r-full);background:#7c3aed;border:2px solid var(--base);box-shadow:0 0 0 3px #7c3aed33}.tl-entry.action-create:before{background:#22c55e;box-shadow:0 0 0 3px #22c55e33}.tl-entry.action-update:before{background:#3b82f6;box-shadow:0 0 0 3px #3b82f633}.tl-entry.action-delete:before{background:#ef4444;box-shadow:0 0 0 3px #ef444433}.tl-entry.action-abnormal:before{background:#f59e0b;box-shadow:0 0 0 3px #f59e0b33}.tl-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.35rem}.tl-action{font-weight:700;font-size:.9rem}.tl-action.act-create{color:#86efac}.tl-action.act-update{color:#93c5fd}.tl-action.act-delete{color:#fca5a5}.tl-action.act-abnormal{color:#fcd34d}.tl-action.act-default{color:#c4b5fd}.tl-time{font-size:.7rem;color:var(--text-4);font-family:JetBrains Mono,monospace}.tl-meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.35rem}.badge{display:inline-block;padding:.12rem .5rem;border-radius:var(--r-full);font-size:.65rem;font-weight:700}.badge-entity{background:#60a5fa1f;color:#93c5fd}.badge-user{background:#7dd3fc1f;color:#7dd3fc}.badge-role{background:#a78bfa1f;color:#c4b5fd}.badge-scope{background:#fbbf241f;color:#fcd34d}.tl-reason{font-size:.78rem;color:var(--text-3);margin-top:.25rem}.tl-diff{margin-top:.5rem;background:var(--base);border:1px solid var(--border);border-radius:var(--r-md);padding:.6rem .85rem;font-family:JetBrains Mono,monospace;font-size:.7rem;overflow-x:auto}.diff-label{font-size:.65rem;color:var(--text-4);text-transform:uppercase;margin-bottom:.15rem;font-weight:600}.diff-before{color:#fca5a5}.diff-after{color:#86efac}.empty-msg{color:var(--text-4);font-size:.8rem;font-style:italic;padding:1.5rem 0;text-align:center}@media (max-width: 600px){.page-wrap{padding:1.5rem 1rem 2rem}.page-title{font-size:1.25rem}.filter-bar{flex-direction:column;align-items:stretch}.filter-group{flex-direction:row;align-items:center;gap:.5rem}select{min-width:0;flex:1}}
