:root{--ch-blue:#2563eb;--ch-blue2:#3b82f6;--ch-slate:#64748b;--ch-bg:#f5f7fb;--ch-card:#fff;--ch-border:#e5e7eb;--ch-ok:#059669;--ch-warn:#d97706;--ch-bad:#dc2626}
.ch-shell{min-height:100vh;background:var(--ch-bg)}
.ch-topbar{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--ch-border);box-shadow:0 4px 20px rgba(15,23,42,.04)}
.ch-topbar-inner{max-width:1280px;margin:auto;padding:14px 22px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.ch-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:24px;color:#1e293b;text-decoration:none}.ch-brand-mark{color:var(--ch-blue);font-size:28px}.ch-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ch-nav a,.ch-nav button{border:1px solid #dbe2ea;background:white;color:#334155;border-radius:10px;padding:9px 13px;font-weight:700;text-decoration:none;cursor:pointer}.ch-nav a:hover,.ch-nav button:hover{background:#f8fafc}.ch-nav .primary{background:var(--ch-blue);color:white;border-color:var(--ch-blue)}
.ch-crumbs{max-width:1280px;margin:0 auto;padding:13px 22px 0;color:#64748b;font-size:14px}.ch-crumbs a{color:#2563eb;text-decoration:none}.ch-crumbs span{margin:0 6px;color:#94a3b8}
.ch-role-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:800;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.ch-role-badge.admin{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}
.ch-toast-wrap{position:fixed;right:22px;top:82px;z-index:99999;display:flex;flex-direction:column;gap:10px;max-width:min(420px,calc(100vw - 44px))}.ch-toast{background:white;border:1px solid #e2e8f0;border-left:5px solid #2563eb;border-radius:12px;box-shadow:0 14px 40px rgba(15,23,42,.15);padding:13px 15px;display:flex;gap:10px;align-items:flex-start;animation:chIn .18s ease-out}.ch-toast.ok{border-left-color:#059669}.ch-toast.bad{border-left-color:#dc2626}.ch-toast.warn{border-left-color:#d97706}.ch-toast b{display:block;margin-bottom:2px}.ch-toast small{color:#64748b}.ch-toast button{margin-left:auto;border:0;background:transparent;cursor:pointer;font-size:18px;color:#94a3b8}@keyframes chIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.ch-loading{position:fixed;inset:0;z-index:99990;background:rgba(248,250,252,.78);backdrop-filter:blur(2px);display:none;align-items:center;justify-content:center}.ch-loading.on{display:flex}.ch-loading-card{background:white;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 20px 50px rgba(15,23,42,.16);padding:18px 22px;display:flex;align-items:center;gap:12px;font-weight:800;color:#334155}.ch-spin{width:22px;height:22px;border-radius:50%;border:3px solid #dbeafe;border-top-color:#2563eb;animation:chSpin .8s linear infinite}@keyframes chSpin{to{transform:rotate(360deg)}}
.ch-page-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ch-version{font-size:12px;padding:4px 9px;border-radius:999px;background:#eef2ff;color:#4338ca;font-weight:800;border:1px solid #c7d2fe}
@media(max-width:700px){.ch-topbar-inner{padding:12px 14px}.ch-brand{font-size:20px}.ch-crumbs{padding-left:14px;padding-right:14px}.ch-nav a,.ch-nav button{padding:8px 10px;font-size:13px}}

/* CodeHub V2.6.1 identity/header polish */
.ch-mini-version{font-size:10px;line-height:1;padding:4px 6px;border-radius:999px;background:#eef2ff;color:#4338ca;border:1px solid #c7d2fe;font-weight:800}
.ch-userbox{display:flex;align-items:center;gap:8px;padding:5px 9px 5px 6px;border:1px solid #dbe2ea;border-radius:12px;background:#f8fafc;min-width:150px}
.ch-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#2563eb,#7c3aed);color:white;font-size:12px;font-weight:900;box-shadow:0 3px 10px rgba(37,99,235,.22);flex:0 0 auto}
.ch-usertext{display:flex;flex-direction:column;line-height:1.05;min-width:0}.ch-usertext>b{font-size:12px;color:#1e293b;max-width:145px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-usertext .ch-role-badge{padding:0;border:0;background:transparent!important;color:#64748b!important;font-size:10px;margin-top:4px;justify-content:flex-start}
@media(max-width:850px){.ch-userbox{min-width:auto}.ch-usertext{display:none}.ch-mini-version{display:none}}
