@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html,body,#root{height:100%;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;background:var(--bg-page);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif;transition:background-color .25s,color .25s}.font-display{font-family:Space Grotesk Variable,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif}.font-num{font-variant-numeric:tabular-nums}.wb{max-width:960px}.wb-hero{justify-content:space-between;align-items:flex-start;gap:24px;padding:8px 0 32px;display:flex}.wb-title{color:var(--text-primary);letter-spacing:.01em;margin:0 0 10px;font-size:28px;font-weight:600}.wb-date{color:var(--text-secondary);letter-spacing:.02em;margin:0;font-size:13px}.wb-brand{letter-spacing:.06em;color:var(--text-muted);white-space:nowrap;padding-top:8px;font-size:18px;font-weight:600}.wb-strip{border-top:1px solid var(--border);border-bottom:1px solid var(--border);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.wb-stat{flex-direction:column;gap:8px;padding:20px 20px 20px 0;display:flex}.wb-stat+.wb-stat{border-left:1px solid var(--border);padding-left:20px}.wb-stat-label{letter-spacing:.08em;color:var(--text-secondary);font-size:12px}.wb-stat-value{color:var(--text-primary);font-size:20px;font-weight:600;line-height:1.4}.wb-role-tag{color:var(--tag-text);background:var(--tag-bg);border-color:var(--tag-border);margin-inline-end:0;font-size:13px}.wb-assembly{padding-top:36px}.wb-section-title{color:var(--text-primary);margin:0 0 20px;font-size:15px;font-weight:600}.wb-group{grid-template-columns:96px 1fr;gap:16px;padding:14px 0;display:grid}.wb-group+.wb-group{border-top:1px solid var(--border-weak)}.wb-group-label{color:var(--text-muted);letter-spacing:.06em;padding-top:3px;font-size:12px}.wb-shortcut-list{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.wb-shortcut{border:1px solid var(--border-weak);width:100%;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:8px;padding:10px 12px;font-family:inherit;font-size:14px;transition:background-color .15s,border-color .15s;display:flex}.wb-shortcut:hover,.wb-shortcut:focus-visible{background:var(--hover-overlay);border-color:var(--border)}.wb-shortcut-icon{color:var(--accent);font-size:15px;display:inline-flex}.wb-empty{color:var(--text-muted);font-size:14px}.wb-anim{animation:.6s cubic-bezier(.16,1,.3,1) both login-fade-up}@media (width<=900px){.wb-brand{display:none}.wb-group{grid-template-columns:1fr;gap:8px}}@media (prefers-reduced-motion:reduce){.wb-anim{animation:none}}.um-search-icon{color:var(--text-muted)}.login-alt-action{text-align:center;color:var(--text-secondary);margin-top:16px;font-size:13px}.login-alt-action a{color:var(--text-primary);font-weight:500}.login-alt-action a:hover{text-decoration:underline}.um-user-cell{align-items:center;gap:12px;display:flex}.um-avatar{background:var(--avatar-bg);color:var(--avatar-text);flex-shrink:0;font-weight:600}.um-user-meta{flex-direction:column;gap:2px;line-height:1.3;display:flex}.um-username{color:var(--text-primary);font-size:14px;font-weight:500}.um-usercode{color:var(--text-muted);letter-spacing:.02em;font-size:12px}.um-email{color:var(--text-secondary);font-size:13px}.um-muted{color:var(--text-muted);font-size:13px}.um-date{color:var(--text-secondary);font-size:12.5px}.um-role-tag{color:var(--tag-text);background:var(--tag-bg);border-color:var(--tag-border);margin-inline-end:0}.role-list{flex-direction:column;max-height:380px;margin-top:4px;display:flex;overflow-y:auto}.role-item{cursor:pointer;border-radius:8px;align-items:flex-start;gap:12px;padding:11px 12px;transition:background-color .15s;display:flex}.role-item:hover{background:var(--hover-overlay)}.role-item+.role-item{margin-top:2px}.role-item-body{flex:1;min-width:0}.role-item-head{align-items:center;gap:8px;display:flex}.role-item-name{color:var(--text-primary);font-size:14px;font-weight:500}.role-item-code{color:var(--tag-text);background:var(--tag-bg);border-color:var(--tag-border);margin-inline-end:0;font-size:12px}.role-item-desc{color:var(--text-muted);margin-top:3px;font-size:12.5px;line-height:1.5}.user-form{padding-top:6px}.user-form .ant-form-item-label>label{color:var(--text-primary);font-weight:500}.user-form .ant-form-item-extra{min-height:auto;color:var(--text-muted);margin-top:4px;font-size:12.5px}.up-option{flex-direction:column;gap:2px;min-width:0;padding:3px 0;display:flex}.up-option-main{align-items:center;gap:8px;min-width:0;display:flex}.up-option-name{color:var(--text-primary);white-space:nowrap;font-weight:500}.up-option-account{color:var(--text-muted);letter-spacing:.02em;font-size:12px}.up-option-status{flex-shrink:0;margin-inline:auto 0;padding-inline:4px;font-size:11px;line-height:16px}.up-option-sub{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.page{flex-direction:column;height:100%;min-height:0;display:flex}.page-header{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:16px;padding:4px 0 20px;display:flex}.page>.ant-table-wrapper,.page>.ant-table-wrapper .ant-spin-nested-loading,.page>.ant-table-wrapper .ant-spin-container,.page>.ant-table-wrapper .ant-table,.page>.ant-table-wrapper .ant-table-container{flex-direction:column;flex:1;min-height:0;display:flex}.page>.ant-table-wrapper .ant-table-content{flex:1;min-height:0;overflow:auto}.page>.ant-table-wrapper .ant-pagination{flex-shrink:0}.page-toolbar{flex-wrap:wrap;flex-shrink:0;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.page-toolbar-filters{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.page-toolbar-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.page-title{color:var(--text-primary);margin:0 0 6px;font-size:22px;font-weight:600}.page-subtitle{color:var(--text-secondary);margin:0;font-size:13px}@media (width<=768px){.page-header{padding:0 0 14px}.page-title{font-size:18px}.page-toolbar{margin-bottom:12px}.page-toolbar-actions{width:100%;margin-left:0}}.layout-user{cursor:pointer;color:inherit;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:4px 8px;transition:background-color .2s;display:inline-flex}.layout-user:hover{background:var(--hover-overlay)}.layout-user-avatar{background:var(--avatar-bg);color:var(--avatar-text);font-weight:600}.layout-user-name{color:var(--text-primary);font-size:14px}.layout-icon-btn{width:32px;height:32px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;transition:background-color .2s,color .2s;display:inline-flex}.layout-icon-btn:hover{background:var(--hover-overlay);color:var(--text-primary)}.login-page{background:var(--bg-page);min-height:100dvh;display:flex;position:relative}.login-main{flex:1;justify-content:center;align-items:center;padding:48px 24px;display:flex}.login-theme-toggle{z-index:5;position:absolute;top:16px;right:16px}.brand-panel{background:#09090b;display:none;position:relative;overflow:hidden}.brand-nebula{object-fit:cover;opacity:.9;width:100%;height:100%;animation:90s ease-in-out infinite alternate nebula-drift;position:absolute;inset:0}.brand-scrim{background:linear-gradient(90deg,#09090b40,#09090b8c 65%,#09090b),linear-gradient(#0000 55%,#09090bcc);position:absolute;inset:0}.brand-content{flex-direction:column;justify-content:space-between;height:100%;display:flex;position:relative}.brand-wordmark{letter-spacing:.06em;color:#fafafa;font-size:22px;font-weight:600}.brand-dot{background:var(--accent-dot);vertical-align:baseline;border-radius:999px;width:7px;height:7px;margin-left:6px;display:inline-block}.brand-tagline{color:#d4d4d8;max-width:22em;margin:0;font-size:15px;line-height:1.9}.login-box{width:100%;max-width:360px}.login-wordmark{letter-spacing:.06em;color:var(--text-primary);margin-bottom:44px;font-size:20px;font-weight:600;display:none}.login-title{color:var(--text-primary);margin:0 0 8px;font-size:26px;font-weight:600}.login-subtitle{color:var(--text-secondary);margin:0 0 36px;font-size:14px}.login-form .ant-form-item-label>label{color:var(--text-secondary)}.login-error{border:1px solid var(--error-border);background:var(--error-bg);color:var(--error-text);border-radius:8px;align-items:flex-start;gap:8px;margin-bottom:20px;padding:9px 12px;font-size:13px;line-height:20px;display:flex}.login-prefix-icon{color:var(--text-muted);margin-inline-end:4px}.login-submit{letter-spacing:.12em;background:var(--btn-bg);height:44px;color:var(--btn-text);border-color:#0000;font-weight:600;transition:transform .12s,background-color .2s}.login-submit:hover,.login-submit:focus{background:var(--btn-bg-hover)!important;color:var(--btn-text)!important;border-color:#0000!important}.login-submit:active{transform:scale(.98)}.login-footer{letter-spacing:.12em;color:var(--text-muted);margin-top:48px;font-size:12px}@keyframes login-fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.login-anim{animation:.7s cubic-bezier(.16,1,.3,1) both login-fade-up}@keyframes nebula-drift{0%{transform:scale(1)}to{transform:scale(1.08)}}@media (width>=1024px){.brand-panel{flex-direction:column;width:55%;padding:48px;display:flex}}.palette-item{border:1px solid var(--border);text-align:center;cursor:grab;background:var(--bg-surface);-webkit-user-select:none;user-select:none;border-radius:6px;padding:10px 6px;transition:border-color .15s,background-color .15s}.palette-item:hover{border-color:var(--accent);background:var(--accent-weak-bg)}@media (prefers-reduced-motion:reduce){.login-anim,.brand-nebula{animation:none}}
