#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:root{--tm-primary:#0E9F8F;--tm-primary-600:#0C8A7D;--tm-primary-050:#E6F7F4;--tm-primary-100:#CDEEE8;--tm-ink:#16302B;--tm-text:#334742;--tm-muted:#7A8C87;--tm-bg:#F4F7F6;--tm-surface:#FFFFFF;--tm-border:#E3ECE9;--tm-amber:#F59E0B;--tm-coral:#F0564A;--tm-blue:#2F6BFF;--tm-green:#22C55E;--tm-violet:#7C5CFF;--tm-header-h:56px;--tm-sidebar-w:224px;--tm-sidebar-wc:64px;--el-color-primary:#0E9F8F;--el-color-primary-light-3:#4DBBAE;--el-color-primary-light-5:#86D2C9;--el-color-primary-light-7:#BFE7E1;--el-color-primary-light-8:#D8F1EC;--el-color-primary-light-9:#E6F7F4;--el-color-primary-dark-2:#0C8A7D;--el-border-radius-base:8px}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{font-family:PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;color:var(--tm-text);background:var(--tm-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{color:var(--tm-ink)}a{color:var(--tm-primary);text-decoration:none}.tm-scroll{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#B9CDC8 transparent}.tm-scroll::-webkit-scrollbar{width:8px;height:8px}.tm-scroll::-webkit-scrollbar-track{background:transparent}.tm-scroll::-webkit-scrollbar-thumb{background:#c4d6d1;border-radius:8px;border:2px solid transparent;background-clip:content-box}.tm-scroll::-webkit-scrollbar-thumb:hover{background:var(--tm-primary);border:2px solid transparent;background-clip:content-box}.tm-scroll::-webkit-scrollbar-corner{background:transparent}.tm-app{height:100%}.tm-header{position:fixed;top:0;left:0;right:0;height:var(--tm-header-h);background:var(--tm-surface);border-bottom:1px solid var(--tm-border);display:flex;align-items:center;z-index:100;padding-right:16px}.tm-header .logo-zone{width:var(--tm-sidebar-w);min-width:var(--tm-sidebar-w);display:flex;align-items:center;gap:10px;padding:0 16px;height:100%;border-right:1px solid var(--tm-border);transition:width .25s,min-width .25s}.tm-app.collapsed .tm-header .logo-zone{width:var(--tm-sidebar-wc);min-width:var(--tm-sidebar-wc);padding:0;justify-content:center}.tm-logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#0e9f8f,#2f6bff);display:flex;align-items:center;justify-content:center;color:#fff;flex:none}.tm-logo svg{width:20px;height:20px}.tm-brand{font-weight:700;color:var(--tm-ink);font-size:16px;letter-spacing:.5px;white-space:nowrap}.tm-app.collapsed .tm-brand{display:none}.tm-crumb{display:flex;align-items:center;gap:6px;padding:0 18px;color:var(--tm-muted);font-size:13px;flex:1;min-width:0}.tm-crumb .c-item{display:flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}.tm-crumb .c-item:hover{color:var(--tm-primary)}.tm-crumb .c-item.current{color:var(--tm-primary);font-weight:600}.tm-crumb .sep{color:#c2cfca}.tm-hactions{display:flex;align-items:center;gap:10px}.tm-iconbtn{width:36px;height:36px;border-radius:50%;border:1px solid var(--tm-border);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tm-muted);position:relative;transition:.2s}.tm-iconbtn:hover{color:var(--tm-primary);border-color:var(--tm-primary);background:var(--tm-primary-050)}.tm-iconbtn .badge{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;border-radius:8px;background:var(--tm-amber);color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid #fff}.tm-avatar{width:36px;height:36px;border-radius:50%;cursor:pointer;border:2px solid var(--tm-primary-100);object-fit:cover}.tm-sidebar{position:fixed;top:var(--tm-header-h);left:0;bottom:0;width:var(--tm-sidebar-w);background:var(--tm-surface);border-right:1px solid var(--tm-border);display:flex;flex-direction:column;z-index:90;transition:width .25s}.tm-app.collapsed .tm-sidebar{width:var(--tm-sidebar-wc)}.tm-menu-search{padding:12px 12px 8px}.tm-app.collapsed .tm-menu-search{display:none}.tm-menu{flex:1;padding:4px 10px 12px}.tm-menu .m-single,.tm-menu .m-group-head{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;cursor:pointer;color:var(--tm-text);font-size:14px;margin:2px 0;transition:.15s;user-select:none}.tm-menu .m-single:hover,.tm-menu .m-group-head:hover{background:var(--tm-primary-050);color:var(--tm-primary)}.tm-menu .m-single.active{background:var(--tm-primary-050);color:var(--tm-primary);font-weight:600}.tm-menu .m-ico{width:18px;height:18px;flex:none;display:flex;align-items:center;justify-content:center}.tm-menu .m-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tm-menu .m-caret{transition:transform .2s;color:var(--tm-muted)}.tm-menu .m-caret.open{transform:rotate(90deg)}.tm-menu .m-children{overflow:hidden}.tm-menu .m-child{display:flex;align-items:center;gap:8px;padding:9px 12px 9px 40px;border-radius:9px;cursor:pointer;color:var(--tm-text);font-size:13.5px;margin:1px 0;transition:.15s}.tm-menu .m-child:hover{background:var(--tm-primary-050);color:var(--tm-primary)}.tm-menu .m-child.active{background:var(--tm-primary-050);color:var(--tm-primary);font-weight:600}.tm-menu mark{background:var(--tm-primary-100);color:var(--tm-primary-600);border-radius:3px;padding:0 1px}.tm-menu .m-empty{padding:20px 12px;color:var(--tm-muted);font-size:13px;text-align:center}.tm-app.collapsed .tm-menu .m-label,.tm-app.collapsed .tm-menu .m-caret,.tm-app.collapsed .tm-menu .m-children{display:none}.tm-app.collapsed .tm-menu .m-single,.tm-app.collapsed .tm-menu .m-group-head{justify-content:center;padding:12px 0}.tm-sidebar-foot{border-top:1px solid var(--tm-border);padding:10px;display:flex;justify-content:flex-start}.tm-app.collapsed .tm-sidebar-foot{justify-content:center}.tm-collapse-btn{width:32px;height:32px;border-radius:8px;border:none;background:transparent;color:var(--tm-muted);cursor:pointer;display:flex;align-items:center;justify-content:center}.tm-collapse-btn:hover{background:var(--tm-primary-050);color:var(--tm-primary)}.tm-content{position:fixed;top:var(--tm-header-h);left:var(--tm-sidebar-w);right:0;bottom:0;padding:16px;transition:left .25s}.tm-app.collapsed .tm-content{left:var(--tm-sidebar-wc)}.tm-panel{background:var(--tm-surface);border:1px solid var(--tm-border);border-radius:12px;min-height:100%;display:flex;flex-direction:column;overflow:hidden}.tm-tabs{display:flex;gap:4px;padding:0 16px;border-bottom:1px solid var(--tm-border);overflow-x:auto;scrollbar-width:none}.tm-tabs::-webkit-scrollbar{display:none}.tm-tab{padding:14px;cursor:pointer;color:var(--tm-text);font-size:14px;position:relative;white-space:nowrap;display:flex;align-items:center;gap:6px}.tm-tab:hover{color:var(--tm-primary)}.tm-tab.active{color:var(--tm-primary);font-weight:600}.tm-tab.active:after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2.5px;border-radius:2px;background:var(--tm-primary)}.tm-tab .cnt{background:var(--tm-primary-050);color:var(--tm-primary);border-radius:9px;font-size:11px;padding:1px 7px}.tm-toolbar{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--tm-border);flex-wrap:wrap}.tm-toolbar .t-title{font-weight:700;color:var(--tm-ink);font-size:15px}.tm-toolbar .t-hint{color:var(--tm-muted);font-size:12.5px}.tm-toolbar .spacer{flex:1}.tm-body{padding:16px;flex:1}.tm-card{background:var(--tm-surface);border:1px solid var(--tm-border);border-radius:12px;padding:16px}.tm-stat{display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden}.tm-stat .v{font-size:28px;font-weight:800;color:var(--tm-ink);line-height:1}.tm-stat .l{color:var(--tm-muted);font-size:13px}.tm-grid{display:grid;gap:14px}.tm-tag{display:inline-flex;align-items:center;gap:4px;border-radius:6px;font-size:12px;padding:2px 8px}.tm-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 0;color:var(--tm-muted)}.tm-empty svg{width:88px;height:70px;opacity:.8;margin-bottom:12px}.tm-viewer-wrap{display:flex;gap:0;border:1px solid var(--tm-border);border-radius:12px;overflow:hidden;background:#0f1b18;min-height:420px}.tm-viewer-canvas{flex:1;position:relative;min-width:0}.tm-viewer-canvas canvas{display:block;width:100%;height:100%}.tm-viewer-ctrl{width:250px;flex:none;background:var(--tm-surface);border-left:1px solid var(--tm-border);padding:14px;overflow-y:auto}.tm-ctrl-row{margin-bottom:12px}.tm-ctrl-row .lab{display:flex;justify-content:space-between;font-size:12.5px;color:var(--tm-muted);margin-bottom:4px}.tm-ctrl-row .lab b{color:var(--tm-ink)}.tm-hero{border-radius:14px;padding:22px;color:#fff;background:linear-gradient(120deg,#0e9f8f,#12b3a0 35%,#2f6bff 78%,#7c5cff);position:relative;overflow:hidden}.tm-hero:after{content:"";position:absolute;right:-40px;top:-60px;width:220px;height:220px;border-radius:50%;background:#ffffff1f}.tm-hero:before{content:"";position:absolute;right:60px;bottom:-80px;width:160px;height:160px;border-radius:50%;background:#f59e0b40}.tm-fab{position:fixed;right:22px;bottom:26px;width:52px;height:52px;border-radius:50%;background:#fff;border:1px solid var(--tm-border);box-shadow:0 6px 20px #16302b26;cursor:pointer;z-index:120;display:flex;align-items:center;justify-content:center;overflow:hidden}.tm-fab:hover{transform:translateY(-2px)}.fade-enter-active,.fade-leave-active{transition:opacity .18s}.fade-enter-from,.fade-leave-to{opacity:0}.el-table{--el-table-header-bg-color:#F7FAF9;--el-table-header-text-color:#5B6E69}.tm-thumb{width:100%;height:120px;border-radius:9px;object-fit:cover;background:var(--tm-primary-050);display:block}html,body{overflow:hidden}#nprogress .bar{background:var(--tm-primary)!important;height:2.5px}#nprogress .peg{box-shadow:0 0 10px var(--tm-primary),0 0 5px var(--tm-primary)}:focus-visible{outline:2px solid var(--tm-primary);outline-offset:2px}.tm-menu .m-disabled{opacity:.55;cursor:default}.tm-menu .m-disabled:hover{background:transparent;color:var(--tm-text)}.tm-menu .m-badge{flex:none;font-size:10px;line-height:16px;padding:0 6px;border-radius:9px;background:var(--tm-primary-050);border:1px solid var(--tm-primary-100);color:var(--tm-primary-600);font-weight:600}.tm-app.collapsed .tm-menu .m-badge{display:none}.tm-menu .m-group{margin:2px 0}.tm-avatar--letter{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0e9f8f,#2f6bff);color:#fff;font-weight:700;font-size:15px;user-select:none}.tm-user{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:10px;transition:background .2s}.tm-user:hover{background:var(--tm-primary-050)}.tm-user__name{font-size:13.5px;font-weight:600;color:var(--tm-ink);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tm-user__caret{color:var(--tm-muted)}.tm-shimmer{height:28px;width:72px;border-radius:7px;background:linear-gradient(90deg,#edf3f1 25%,#f7faf9,#edf3f1 65%);background-size:200% 100%;animation:tm-shimmer 1.6s ease-in-out infinite}@keyframes tm-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.page-header h2{margin:0;font-size:20px;letter-spacing:.3px}.page-header p{margin:4px 0 0;color:var(--tm-muted);font-size:13px}.page-header__actions{display:flex;align-items:center;gap:8px;flex:none}.tm-card__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.tm-card__head h3{margin:0;font-size:15px}.tm-card__head .hint{color:var(--tm-muted);font-size:12px}.tm-burger,.tm-drawer-head,.tm-scrim{display:none}.tm-burger{width:40px;height:40px;margin-left:8px;border:none;border-radius:10px;background:transparent;color:var(--tm-ink);cursor:pointer;align-items:center;justify-content:center;flex:none;transition:background .2s}.tm-burger:hover{background:var(--tm-primary-050);color:var(--tm-primary)}.tm-drawer-head{align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--tm-border)}.tm-drawer-close{width:32px;height:32px;border:1px solid var(--tm-border);border-radius:9px;background:#fff;color:var(--tm-muted);cursor:pointer;display:flex;align-items:center;justify-content:center}.tm-drawer-close:hover{color:var(--tm-primary);border-color:var(--tm-primary)}.tm-scrim{position:fixed;inset:0;z-index:210;background:#16302b73;backdrop-filter:blur(2px)}@media (max-width: 768px){.tm-burger{display:flex}.tm-header{padding-right:10px}.tm-header .logo-zone{width:auto;min-width:0;flex:1;border-right:none;padding:0 8px}.tm-app.collapsed .tm-header .logo-zone{width:auto;min-width:0;padding:0 8px;justify-content:flex-start}.tm-brand{font-size:15px}.tm-app.collapsed .tm-brand{display:inline}.tm-crumb,.tm-user__name,.tm-user__caret{display:none}.tm-sidebar{top:0;width:min(78vw,300px);z-index:220;transform:translate(-105%);transition:transform .25s ease;box-shadow:0 12px 40px #16302b2e}.tm-app.collapsed .tm-sidebar{width:min(78vw,300px)}.tm-app.mobile-open .tm-sidebar{transform:translate(0)}.tm-app.collapsed .tm-menu-search{display:block}.tm-drawer-head{display:flex}.tm-sidebar-foot{display:none}.tm-scrim{display:block}.tm-content{left:0;padding:12px}.tm-app.collapsed .tm-content{left:0}.page-header,.page-header__actions{flex-wrap:wrap}.el-dialog{width:calc(100vw - 24px)!important;max-width:calc(100vw - 24px)}.el-message-box{width:calc(100vw - 32px)!important;max-width:420px}.el-drawer{max-width:100vw}}
