.card{display:block;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--gap);box-shadow:var(--shadow)}
.grid{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.two{display:grid;gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:8px;border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text);font:inherit;cursor:pointer;text-decoration:none}
.btn:hover{border-color:var(--c-primary)}.btn.p{background:var(--c-primary);border-color:var(--c-primary);color:var(--c-on-primary)}
.badge{display:inline-block;padding:1px 8px;border-radius:99px;font-size:.75rem;font-weight:500;border:1px solid var(--c-border);background:var(--c-bg);vertical-align:middle}
.tw{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--c-border);font-size:.9rem}th{text-transform:capitalize}
.kpi{text-decoration:none;color:inherit}.kpi b{display:block;font-size:1.6rem}.kpi span{color:var(--c-muted);font-size:.85rem}
.err{margin:16px;padding:12px;border:2px solid var(--c-err);border-radius:8px;color:var(--c-err);background:var(--c-surface)}
#toast{position:fixed;bottom:16px;left:50%;transform:translate(-50%,20px);max-width:90vw;background:var(--c-text);color:var(--c-bg);padding:10px 16px;border-radius:10px;opacity:0;pointer-events:none;transition:.2s;z-index:50}
#toast.show{opacity:1;transform:translate(-50%,0)}
