:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-bg: #eff6ff;--color-success: #16a34a;--color-success-bg: #f0fdf4;--color-success-text: #166534;--color-warning: #d97706;--color-warning-bg: #fffbeb;--color-warning-text: #92400e;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-bg: #fef2f2;--color-danger-text: #991b1b;--color-info: #0284c7;--color-info-bg: #f0f9ff;--color-info-text: #075985;--color-neutral: #6b7280;--color-neutral-bg: #f3f4f6;--color-surface: #f9fafb;--color-surface-raised: #ffffff;--color-surface-sunken: #f3f4f6;--color-border: #e5e7eb;--color-border-strong: #d1d5db;--color-text: #111827;--color-text-muted: #6b7280;--color-tooltip-bg: #1f2937;--color-overlay: rgba(17, 24, 39, .45);--viz-1: #2a78d6;--viz-2: #eb6834;--viz-3: #1baf7a;--color-role-staff-admin: #7c3aed;--color-role-staff-member: #4f46e5;--color-role-org-admin: #15803d;--color-role-org-member: #374151;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "Cascadia Mono", Consolas, monospace;--fs-base: 14px;--fs-label: 12px;--fs-title: 16px;--lh-base: 1.4;--h-navbar: 48px;--h-contextbar: 36px;--h-control: 32px;--h-control-sm: 28px;--h-row: 36px;--radius: 4px;--space-content-x: 16px;--space-content-top: 12px;--shadow-popover: 0 4px 12px rgba(17, 24, 39, .12);--focus-ring: 0 0 0 2px var(--color-surface-raised), 0 0 0 4px var(--color-primary)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-base);color:var(--color-text);background:var(--color-surface)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.hub-num{font-variant-numeric:tabular-nums}.hub-mono{font-family:var(--font-mono);font-size:12px}.hub-muted{color:var(--color-text-muted)}.hub-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.hub-icon{flex:none;vertical-align:middle}.hub-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h-control);padding:0 12px;font:inherit;font-size:13px;font-weight:500;white-space:nowrap;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;transition:background-color .12s,border-color .12s}.hub-btn--sm{height:var(--h-control-sm);font-size:12px}.hub-btn:disabled{opacity:.55;cursor:not-allowed}.hub-btn--primary{background:var(--color-primary);color:#fff}.hub-btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.hub-btn--secondary{background:transparent;color:var(--color-text);border-color:var(--color-border-strong)}.hub-btn--secondary:hover:not(:disabled){background:var(--color-surface-sunken)}.hub-btn--danger{background:var(--color-danger);color:#fff}.hub-btn--danger:hover:not(:disabled){background:var(--color-danger-hover)}.hub-btn--ghost{background:transparent;color:var(--color-text-muted)}.hub-btn--ghost:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-text)}.hub-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:var(--h-control-sm);height:var(--h-control-sm);padding:0;color:var(--color-text-muted);background:transparent;border:0;border-radius:var(--radius);cursor:pointer}.hub-iconbtn:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-text)}.hub-iconbtn--danger:hover:not(:disabled){background:var(--color-danger-bg);color:var(--color-danger)}.hub-iconbtn--primary:hover:not(:disabled){background:var(--color-primary-bg);color:var(--color-primary)}.hub-iconbtn:disabled{opacity:.4;cursor:not-allowed}.hub-badge{display:inline-flex;align-items:center;height:18px;padding:0 7px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap;border-radius:99px}.hub-badge--success{background:var(--color-success-bg);color:var(--color-success-text)}.hub-badge--warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.hub-badge--danger{background:var(--color-danger-bg);color:var(--color-danger-text)}.hub-badge--info{background:var(--color-info-bg);color:var(--color-info-text)}.hub-badge--primary{background:var(--color-primary-bg);color:var(--color-primary-hover)}.hub-badge--neutral{background:var(--color-neutral-bg);color:var(--color-text)}.hub-badge--role-staff_admin{background:var(--color-role-staff-admin);color:#fff}.hub-badge--role-staff_member{background:var(--color-role-staff-member);color:#fff}.hub-badge--role-org_admin{background:var(--color-role-org-admin);color:#fff}.hub-badge--role-org_member{background:var(--color-role-org-member);color:#fff}.hub-infotip{position:relative;display:inline-flex;vertical-align:middle;margin-left:4px}.hub-infotip__icon{display:inline-flex;padding:0;border:0;background:transparent;color:var(--color-info);opacity:.7;cursor:help;border-radius:50%}.hub-infotip__icon:hover,.hub-infotip__icon:focus-visible{opacity:1}.hub-infotip__tip{display:none;position:absolute;z-index:60;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);width:max-content;max-width:280px;padding:6px 8px;font-size:13px;font-weight:400;line-height:1.35;text-transform:none;letter-spacing:normal;text-align:left;color:#fff;background:var(--color-tooltip-bg);border-radius:var(--radius)}.hub-infotip:hover .hub-infotip__tip,.hub-infotip:focus-within .hub-infotip__tip{display:block}.hub-field{display:flex;flex-direction:column;gap:4px;min-width:0}.hub-field__label{font-size:var(--fs-label);font-weight:600;color:var(--color-text);display:flex;align-items:center}.hub-field__req{color:var(--color-danger);margin-left:2px}.hub-field__hint{font-size:var(--fs-label);color:var(--color-text-muted)}.hub-field__error{font-size:var(--fs-label);color:var(--color-danger)}.hub-input,.hub-select,.hub-textarea{width:100%;height:var(--h-control);padding:0 8px;font:inherit;color:var(--color-text);background:var(--color-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius)}.hub-textarea{height:auto;min-height:64px;padding:6px 8px;resize:vertical}.hub-input:focus,.hub-select:focus,.hub-textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:var(--color-primary)}.hub-input[aria-invalid=true],.hub-select[aria-invalid=true],.hub-textarea[aria-invalid=true]{border-color:var(--color-danger)}.hub-input:disabled,.hub-select:disabled,.hub-textarea:disabled{background:var(--color-surface-sunken);color:var(--color-text-muted)}.hub-input--search{padding-left:28px}.hub-searchbox{position:relative;display:inline-block;width:100%;max-width:320px}.hub-searchbox .hub-icon{position:absolute;left:8px;top:8px;color:var(--color-text-muted);pointer-events:none}.hub-check{display:inline-flex;align-items:center;gap:6px;min-height:var(--h-control-sm);cursor:pointer}.hub-check input{margin:0;width:14px;height:14px;accent-color:var(--color-primary)}.hub-formgrid{display:grid;gap:12px}.hub-formgrid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-formgrid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.hub-section{margin:0 0 12px}.hub-section__title{margin:0 0 8px;padding-bottom:4px;font-size:var(--fs-label);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.hub-shell{min-height:100vh;display:flex;flex-direction:column}.hub-navbar{position:sticky;top:0;z-index:30;height:var(--h-navbar);display:flex;align-items:center;gap:16px;padding:0 var(--space-content-x);background:var(--color-surface-raised);border-bottom:1px solid var(--color-border)}.hub-navbar__brand{display:flex;align-items:center;gap:8px;flex:none}.hub-navbar__logo{display:inline-flex;color:var(--color-primary)}.hub-navbar__app{font-weight:600;font-size:14px}.hub-navbar__sep{width:1px;height:20px;background:var(--color-border);flex:none}.hub-navbar__nav{display:flex;align-items:stretch;align-self:stretch;gap:2px;min-width:0}.hub-navbar__spacer{flex:1}.hub-navbar__user{display:flex;align-items:center;gap:8px;flex:none}.hub-navbar__name{font-size:13px}.hub-navlink{position:relative;display:inline-flex;align-items:center;gap:4px;padding:0 10px;font:inherit;font-size:13px;color:var(--color-text-muted);text-decoration:none;background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap}.hub-navlink:hover{color:var(--color-text);background:var(--color-surface)}.hub-navlink--active{color:var(--color-text);font-weight:600;border-bottom-color:var(--color-primary)}.hub-navmenu{position:relative;display:flex}.hub-navmenu__list{position:absolute;top:calc(100% - 1px);left:0;z-index:40;min-width:180px;padding:4px 0;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-popover)}.hub-navmenu__item{display:block;width:100%;padding:6px 12px;font:inherit;font-size:13px;text-align:left;color:var(--color-text);text-decoration:none;background:transparent;border:0;cursor:pointer}.hub-navmenu__item:hover{background:var(--color-primary-bg)}.hub-navmenu__item--active{font-weight:600;color:var(--color-primary-hover)}.hub-contextbar{position:sticky;top:var(--h-navbar);z-index:20;height:var(--h-contextbar);display:flex;align-items:center;gap:8px;padding:0 var(--space-content-x);font-size:13px;background:var(--color-surface-sunken);border-bottom:1px solid var(--color-border)}.hub-contextbar--behalf{background:var(--color-warning-bg);border-bottom-color:var(--color-warning)}.hub-contextbar__label{color:var(--color-text-muted)}.hub-contextbar__value{font-weight:600}.hub-contextbar__sep{color:var(--color-text-muted)}.hub-contextbar .hub-select{width:auto;min-width:200px;max-width:360px;height:var(--h-control-sm);font-size:13px}.hub-main{flex:1;padding:var(--space-content-top) var(--space-content-x) var(--space-content-x)}.hub-pageheader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.hub-pageheader__title{margin:0;font-size:var(--fs-title);font-weight:600}.hub-pageheader__desc{margin:2px 0 0;font-size:13px;color:var(--color-text-muted)}.hub-pageheader__actions{display:flex;align-items:center;gap:8px;flex:none}.hub-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}.hub-tablewrap{overflow-x:auto;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius)}.hub-table{width:100%;border-collapse:collapse}.hub-table th{position:sticky;top:0;z-index:1;height:var(--h-row);padding:0 12px;font-size:var(--fs-label);font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-align:left;white-space:nowrap;color:var(--color-text-muted);background:var(--color-surface-raised);border-bottom:1px solid var(--color-border)}.hub-table td{height:var(--h-row);padding:0 12px;border-bottom:1px solid var(--color-border);vertical-align:middle}.hub-table tbody tr:last-child td{border-bottom:0}.hub-table tbody tr:nth-child(2n) td{background:var(--color-surface)}.hub-table tbody tr:hover td{background:var(--color-primary-bg)}.hub-table tr.hub-row--highlight td{background:var(--color-warning-bg)}.hub-table tr.hub-row--child td{background:var(--color-surface)}.hub-table tr.hub-row--child td:first-child{padding-left:36px}.hub-table .hub-col--right{text-align:right;font-variant-numeric:tabular-nums}.hub-table .hub-col--center{text-align:center}.hub-table .hub-col--actions{width:1%;white-space:nowrap;text-align:right}.hub-cell-stack{display:flex;flex-direction:column;line-height:1.25;padding:3px 0}.hub-cell-wrap{display:flex;flex-wrap:wrap;gap:4px;padding:4px 0}.hub-pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:6px 0;font-size:13px;color:var(--color-text-muted)}.hub-skeleton{display:inline-block;height:12px;width:100%;vertical-align:middle;background:linear-gradient(90deg,var(--color-surface-sunken),var(--color-border),var(--color-surface-sunken));background-size:200% 100%;border-radius:var(--radius);animation:hub-shimmer 1.2s linear infinite}@keyframes hub-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.hub-empty{padding:28px 12px;text-align:center;color:var(--color-text-muted)}.hub-empty__title{margin:0;font-size:14px;color:var(--color-text)}.hub-empty__hint{margin:2px 0 0;font-size:13px}.hub-empty__action{margin-top:8px}.hub-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px 16px;background:var(--color-overlay);overflow-y:auto}.hub-modal{width:100%;max-width:480px;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-popover)}.hub-modal--sm{max-width:400px}.hub-modal--lg{max-width:720px}.hub-modal__header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--color-border)}.hub-modal__title{margin:0;font-size:var(--fs-title);font-weight:600}.hub-modal__body{padding:16px}.hub-modal__footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid var(--color-border)}.hub-toasts{position:fixed;top:calc(var(--h-navbar) + 8px);right:16px;z-index:70;display:flex;flex-direction:column;gap:8px;width:320px;max-width:calc(100vw - 32px)}.hub-toast{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;font-size:13px;background:var(--color-surface-raised);border:1px solid var(--color-border);border-left:4px solid var(--color-neutral);border-radius:var(--radius);box-shadow:var(--shadow-popover)}.hub-toast--success{border-left-color:var(--color-success)}.hub-toast--error{border-left-color:var(--color-danger)}.hub-toast__msg{flex:1;word-break:break-word}.hub-toast .hub-iconbtn{width:20px;height:20px}.hub-panel{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius)}.hub-panel__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--color-border)}.hub-panel__title{margin:0;font-size:14px;font-weight:600;display:flex;align-items:center}.hub-panel__body{padding:12px}.hub-grid{display:grid;gap:12px;margin-bottom:12px}.hub-grid--tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.hub-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width: 900px){.hub-grid--2{grid-template-columns:minmax(0,1fr)}}.hub-tile{display:flex;flex-direction:column;gap:2px;padding:10px 12px;min-width:0;color:inherit;text-decoration:none;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius)}a.hub-tile:hover{border-color:var(--color-primary);background:var(--color-primary-bg)}.hub-tile__label{font-size:12px;color:var(--color-text-muted);display:flex;align-items:center}.hub-tile__value{font-size:24px;font-weight:600;line-height:1.2}.hub-tile__hint{font-size:12px;color:var(--color-text-muted)}.hub-barlist{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.hub-barlist__row{display:grid;grid-template-columns:minmax(110px,220px) minmax(60px,1fr) auto;align-items:center;gap:12px;width:100%;min-height:28px;padding:2px 6px;font:inherit;text-align:left;color:inherit;text-decoration:none;background:transparent;border:0;border-radius:var(--radius)}a.hub-barlist__row,button.hub-barlist__row{cursor:pointer}a.hub-barlist__row:hover,button.hub-barlist__row:hover{background:var(--color-surface-sunken)}.hub-barlist__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hub-barlist__row--zero .hub-barlist__label,.hub-barlist__row--zero .hub-barlist__value{color:var(--color-text-muted)}.hub-barlist__bar{height:8px;border-left:1px solid var(--color-border-strong)}.hub-barlist__fill{display:block;height:100%;background:var(--viz-1);border-radius:0 4px 4px 0}.hub-barlist__value{min-width:3ch;text-align:right;font-variant-numeric:tabular-nums}.hub-barlist__share{margin-left:6px;font-size:12px;color:var(--color-text-muted)}.hub-segbar{display:flex;gap:2px;height:12px}.hub-segbar__seg{min-width:4px;border:0;padding:0}.hub-segbar__seg:first-child{border-radius:4px 0 0 4px}.hub-segbar__seg:last-child{border-radius:0 4px 4px 0}.hub-segbar__seg:only-child{border-radius:4px}.hub-segbar__seg--1{background:var(--viz-1)}.hub-segbar__seg--2{background:var(--viz-2)}.hub-segbar__seg--3{background:var(--viz-3)}.hub-legend{display:flex;flex-wrap:wrap;gap:4px 16px;margin:10px 0 0;padding:0;list-style:none}.hub-legend__item{display:inline-flex;align-items:center;gap:6px;font-size:13px}.hub-legend__swatch{width:10px;height:10px;border-radius:2px;flex:none}.hub-legend__swatch--1{background:var(--viz-1)}.hub-legend__swatch--2{background:var(--viz-2)}.hub-legend__swatch--3{background:var(--viz-3)}.hub-legend__value{font-weight:600}.hub-filterbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px;margin-bottom:8px}.hub-facet{display:flex;flex-direction:column;gap:2px;min-width:0}.hub-facet__label{font-size:12px;font-weight:600;color:var(--color-text-muted)}.hub-facet .hub-select{width:auto;min-width:150px;max-width:240px}.hub-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px}.hub-chip{display:inline-flex;align-items:center;gap:2px;height:24px;padding:0 2px 0 8px;font-size:12px;font-weight:500;color:var(--color-primary-hover);background:var(--color-primary-bg);border-radius:99px}.hub-chip .hub-iconbtn{width:20px;height:20px;border-radius:50%}.hub-segmented{display:inline-flex;border:1px solid var(--color-border-strong);border-radius:var(--radius);overflow:hidden;background:var(--color-surface-raised)}.hub-segmented__btn{display:inline-flex;align-items:center;gap:6px;height:var(--h-control-sm);padding:0 10px;font:inherit;font-size:13px;color:var(--color-text-muted);background:transparent;border:0;border-right:1px solid var(--color-border);cursor:pointer;white-space:nowrap}.hub-segmented__btn:last-child{border-right:0}.hub-segmented__btn:hover{background:var(--color-surface-sunken);color:var(--color-text)}.hub-segmented__btn[aria-pressed=true]{background:var(--color-primary-bg);color:var(--color-primary-hover);font-weight:600}.hub-segmented__count{font-size:12px;font-variant-numeric:tabular-nums;opacity:.8}.hub-table th .hub-sortbtn{display:inline-flex;align-items:center;gap:4px;padding:0;font:inherit;font-size:inherit;font-weight:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit;background:transparent;border:0;cursor:pointer}.hub-table th .hub-sortbtn:hover{color:var(--color-text)}.hub-refreshing{opacity:.6;transition:opacity .12s}.hub-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:24px 12px;text-align:center;color:var(--color-text-muted);background:var(--color-surface-raised);border:2px dashed var(--color-border-strong);border-radius:var(--radius);cursor:pointer;transition:border-color .12s,background-color .12s}.hub-dropzone:hover,.hub-dropzone--active,.hub-dropzone:focus-within{border-color:var(--color-primary);background:var(--color-primary-bg)}.hub-dropzone__title{font-weight:600;color:var(--color-text)}.hub-dropzone__hint{font-size:12px}.hub-progress{height:6px;background:var(--color-surface-sunken);border-radius:99px;overflow:hidden}.hub-progress__bar{height:100%;background:var(--color-primary);transition:width .15s}.hub-alert{padding:8px 10px;font-size:13px;border-radius:var(--radius);border:1px solid var(--color-border)}.hub-alert--danger{background:var(--color-danger-bg);color:var(--color-danger-text);border-color:var(--color-danger)}.hub-alert--warning{background:var(--color-warning-bg);color:var(--color-warning-text);border-color:var(--color-warning)}.hub-alert--info{background:var(--color-info-bg);color:var(--color-info-text);border-color:var(--color-info)}@media (max-width: 720px){.hub-formgrid--2,.hub-formgrid--3{grid-template-columns:minmax(0,1fr)}.hub-navbar__name{display:none}}@media (prefers-reduced-motion: reduce){.hub-skeleton{animation:none}.hub-btn{transition:none}}
