*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{max-width:100%;overflow-x:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.6;color:var(--color-text-primary, #333);background-color:var(--color-bg-primary, #fff);min-height:100vh;min-height:100dvh}@supports (padding: max(0px)){body{padding-bottom:env(safe-area-inset-bottom)}}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}table{max-width:100%}input,select,textarea{font-size:16px}button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}:root{--color-primary: #409eff;--color-primary-hover: #66b1ff;--color-primary-active: #3a8ee6;--color-primary-light: #ecf5ff;--color-primary-dark: #2b7de9;--color-success: #67c23a;--color-success-hover: #85ce61;--color-success-light: #f0f9eb;--color-warning: #e6a23c;--color-warning-hover: #ebb563;--color-warning-light: #fdf6ec;--color-danger: #f56c6c;--color-danger-hover: #f78989;--color-danger-light: #fef0f0;--color-info: #909399;--color-info-hover: #a6a9ad;--color-info-light: #f4f4f5;--color-text-primary: #303133;--color-text-secondary: #606266;--color-text-tertiary: #909399;--color-text-placeholder: #c0c4cc;--color-text-disabled: #c0c4cc;--color-text-inverse: #ffffff;--color-bg-primary: #ffffff;--color-bg-secondary: #f5f7fa;--color-bg-page: #f0f2f5;--color-bg-hover: #f5f7fa;--color-bg-active: #ecf5ff;--color-bg-mask: rgba(0, 0, 0, .5);--color-bg-overlay: rgba(0, 0, 0, .3);--color-border: #dcdfe6;--color-border-light: #e4e7ed;--color-border-lighter: #ebeef5;--color-border-extra-light: #f2f6fc;--color-border-dark: #d4d7de;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-family-mono: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", "Courier New", Courier, monospace;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-xxl: 24px;--font-size-display: 30px;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-base: 1.5;--line-height-relaxed: 1.75;--spacing-xxs: 4px;--spacing-xs: 8px;--spacing-sm: 12px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-xxl: 48px;--spacing-xxxl: 64px;--radius-xs: 2px;--radius-sm: 4px;--radius-base: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-round: 50%;--radius-pill: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .05);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .06);--shadow-base: 0 4px 8px rgba(0, 0, 0, .08);--shadow-md: 0 6px 16px rgba(0, 0, 0, .08);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 40px rgba(0, 0, 0, .12);--shadow-inner: inset 0 2px 4px rgba(0, 0, 0, .06);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--transition-slower: .4s ease;--z-index-dropdown: 100;--z-index-sticky: 200;--z-index-header: 300;--z-index-sidebar: 400;--z-index-overlay: 500;--z-index-modal: 1000;--z-index-popover: 1100;--z-index-tooltip: 1200;--z-index-loading: 2000;--z-index-toast: 3000;--bg-primary: var(--color-bg-primary);--bg-secondary: var(--color-bg-secondary);--bg-page: var(--color-bg-page);--bg-hover: var(--color-bg-hover);--bg-active: var(--color-bg-active);--bg-card: var(--color-bg-primary);--bg-info: var(--color-info-light);--bg-warning: var(--color-warning-light);--bg-danger: var(--color-danger-light);--bg-mask: var(--color-bg-mask);--text-primary: var(--color-text-primary);--text-secondary: var(--color-text-secondary);--text-tertiary: var(--color-text-tertiary);--text-placeholder: var(--color-text-placeholder);--text-inverse: var(--color-text-inverse);--text-info: var(--color-info);--text-warning: var(--color-warning);--border-color: var(--color-border);--shadow-card: var(--shadow-sm)}html.dark{--color-primary: #409eff;--color-primary-hover: #66b1ff;--color-primary-active: #3a8ee6;--color-primary-light: rgba(64, 158, 255, .15);--color-primary-dark: #2b7de9;--color-success: #67c23a;--color-success-hover: #85ce61;--color-success-light: rgba(103, 194, 58, .15);--color-warning: #e6a23c;--color-warning-hover: #ebb563;--color-warning-light: rgba(230, 162, 60, .15);--color-danger: #f56c6c;--color-danger-hover: #f78989;--color-danger-light: rgba(245, 108, 108, .15);--color-info: #909399;--color-info-hover: #a6a9ad;--color-info-light: rgba(144, 147, 153, .15);--color-text-primary: #e5eaf3;--color-text-secondary: #a3a6ad;--color-text-tertiary: #73767a;--color-text-placeholder: #5a5d63;--color-text-disabled: #5a5d63;--color-text-inverse: #303133;--color-bg-primary: #1d1e1f;--color-bg-secondary: #262727;--color-bg-page: #141414;--color-bg-hover: #2a2a2b;--color-bg-active: rgba(64, 158, 255, .1);--color-bg-mask: rgba(0, 0, 0, .7);--color-bg-overlay: rgba(0, 0, 0, .5);--color-border: #414243;--color-border-light: #363637;--color-border-lighter: #2d2d2e;--color-border-extra-light: #252526;--color-border-dark: #4a4a4b;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .25);--shadow-base: 0 4px 8px rgba(0, 0, 0, .3);--shadow-md: 0 6px 16px rgba(0, 0, 0, .3);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .35);--shadow-xl: 0 20px 40px rgba(0, 0, 0, .4);--shadow-inner: inset 0 2px 4px rgba(0, 0, 0, .2)}.component-table{width:100%;border-collapse:collapse;font-size:var(--font-size-base)}.component-table th,.component-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border-bottom:1px solid var(--color-border-lighter);color:var(--color-text-primary);line-height:var(--line-height-base)}.component-table th{background-color:var(--color-bg-secondary);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--font-size-sm);white-space:nowrap}.component-table tr:hover td{background-color:var(--color-bg-hover)}.component-table--striped tr:nth-child(2n) td{background-color:var(--color-bg-secondary)}.component-form-item{margin-bottom:var(--spacing-lg)}.component-form-label{display:block;margin-bottom:var(--spacing-xs);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary);line-height:var(--line-height-base)}.component-form-label--required:before{content:"*";color:var(--color-danger);margin-right:var(--spacing-xxs)}.component-input{width:100%;height:36px;padding:0 var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-base);font-family:var(--font-family);transition:border-color var(--transition-base);outline:none;box-sizing:border-box}.component-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.component-input::placeholder{color:var(--color-text-placeholder)}.component-input--error{border-color:var(--color-danger)}.component-input--error:focus{box-shadow:0 0 0 2px var(--color-danger-light)}.component-textarea{width:100%;min-height:100px;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-base);font-family:var(--font-family);resize:vertical;outline:none;box-sizing:border-box;transition:border-color var(--transition-base)}.component-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.component-select{height:36px;padding:0 var(--spacing-xl) 0 var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-base);font-family:var(--font-family);cursor:pointer;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23909399' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;transition:border-color var(--transition-base)}.component-select:focus{border-color:var(--color-primary)}.component-tag{display:inline-flex;align-items:center;height:24px;padding:0 var(--spacing-xs);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:1;white-space:nowrap}.component-tag--default{background-color:var(--color-info-light);color:var(--color-info)}.component-tag--success{background-color:var(--color-success-light);color:var(--color-success)}.component-tag--warning{background-color:var(--color-warning-light);color:var(--color-warning)}.component-tag--danger{background-color:var(--color-danger-light);color:var(--color-danger)}.component-tag--primary{background-color:var(--color-primary-light);color:var(--color-primary)}.component-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);background-color:var(--color-danger);color:var(--color-text-inverse);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:1}.component-divider{height:1px;background-color:var(--color-border-lighter);margin:var(--spacing-lg) 0;border:none}.component-divider--text{display:flex;align-items:center;gap:var(--spacing-md);color:var(--color-text-tertiary);font-size:var(--font-size-sm)}.component-divider--text:before,.component-divider--text:after{content:"";flex:1;height:1px;background-color:var(--color-border-lighter)}.component-hint{font-size:var(--font-size-xs);color:var(--color-text-tertiary);line-height:var(--line-height-base);margin-top:var(--spacing-xxs)}.component-hint--error{color:var(--color-danger)}.component-avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-round);background-color:var(--color-primary-light);color:var(--color-primary);font-weight:var(--font-weight-semibold);overflow:hidden;flex-shrink:0}.component-avatar--sm{width:28px;height:28px;font-size:var(--font-size-xs)}.component-avatar--md{width:36px;height:36px;font-size:var(--font-size-base)}.component-avatar--lg{width:48px;height:48px;font-size:var(--font-size-lg)}.component-avatar img{width:100%;height:100%;object-fit:cover}.layout-container{max-width:1600px;margin-left:auto;margin-right:auto;padding-left:var(--spacing-xxl);padding-right:var(--spacing-xxl);width:100%}.layout-container--narrow{max-width:960px}.layout-container--wide{max-width:1600px}:root{--layout-header-top-height: 56px;--layout-header-middle-height: 48px;--layout-header-nav-height: 44px;--layout-header-full-height: 148px;--layout-header-admin-height: 104px;--layout-sidebar-width: 220px;--layout-sidebar-collapsed-width: 64px;--layout-footer-height: 200px}.layout-flex{display:flex}.layout-flex--column{display:flex;flex-direction:column}.layout-flex--center{display:flex;align-items:center;justify-content:center}.layout-flex--between{display:flex;align-items:center;justify-content:space-between}.layout-flex--wrap{flex-wrap:wrap}.layout-flex--gap-xs{gap:var(--spacing-xs)}.layout-flex--gap-sm{gap:var(--spacing-sm)}.layout-flex--gap-md{gap:var(--spacing-md)}.layout-flex--gap-lg{gap:var(--spacing-lg)}.layout-flex--gap-xl{gap:var(--spacing-xl)}.layout-flex--1{flex:1}.layout-grid{display:grid;gap:var(--spacing-lg)}.layout-grid--2{grid-template-columns:repeat(2,1fr)}.layout-grid--3{grid-template-columns:repeat(3,1fr)}.layout-grid--4{grid-template-columns:repeat(4,1fr)}.layout-grid--5{grid-template-columns:repeat(5,1fr)}.layout-section{padding-top:var(--spacing-xl);padding-bottom:var(--spacing-xl)}.layout-page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border-lighter)}.layout-page-title{margin:0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-tight)}.layout-form{max-width:640px}.layout-form--wide{max-width:960px}.layout-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--spacing-lg)}.layout-toolbar{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap}:root{--breakpoint-mobile-sm: 576px;--breakpoint-mobile: 576px;--breakpoint-tablet-sm: 768px;--breakpoint-tablet: 992px;--breakpoint-desktop: 1200px;--breakpoint-desktop-lg: 1400px}@media (min-width: 1400px){.layout-container{max-width:1600px;padding-left:var(--spacing-xxl);padding-right:var(--spacing-xxl)}}@media (min-width: 1200px) and (max-width: 1399px){.layout-container{max-width:1200px;padding-left:var(--spacing-xl);padding-right:var(--spacing-xl)}}@media (max-width: 991px){.layout-grid--4,.layout-grid--5{grid-template-columns:repeat(3,1fr)}.layout-card-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--spacing-md)}}@media (max-width: 767px){.layout-grid--3,.layout-grid--4,.layout-grid--5{grid-template-columns:repeat(2,1fr)}.layout-container{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}}@media (max-width: 575px){.layout-grid--2,.layout-grid--3,.layout-grid--4,.layout-grid--5{grid-template-columns:1fr}.layout-card-grid{grid-template-columns:1fr;gap:var(--spacing-sm)}.layout-container{padding-left:var(--spacing-sm);padding-right:var(--spacing-sm)}}@media (max-width: 767px){.app-header__row{padding:0 var(--spacing-md)}.app-header__row--top{height:48px}.app-header__row--middle{height:40px}.app-header__site-name{font-size:var(--font-size-md)}}@media (max-width: 991px){.app-sidebar{width:var(--layout-sidebar-collapsed-width)!important}}@media (max-width: 575px){.app-sidebar{display:none}}@media (max-width: 767px){.app-footer{padding:var(--spacing-lg) var(--spacing-md)}.app-footer__row--top{flex-direction:column;align-items:center;gap:var(--spacing-md);text-align:center}}@media (max-width: 767px){.layout-section{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-lg)}.layout-page-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.layout-toolbar{flex-direction:column;align-items:stretch;gap:var(--spacing-sm)}.layout-form{max-width:100%}}@media (max-width: 767px){.component-table{display:block;overflow-x:auto;white-space:nowrap}}.visible-mobile,.visible-tablet,.visible-desktop{display:none!important}@media (max-width: 767px){.visible-mobile{display:block!important}.hidden-mobile{display:none!important}}@media (min-width: 768px) and (max-width: 1199px){.visible-tablet{display:block!important}.hidden-tablet{display:none!important}}@media (min-width: 1200px){.visible-desktop{display:block!important}.hidden-desktop{display:none!important}}.app-header,.app-footer,.admin-layout,.public-layout,.layout-container,.layout-section,.component-table,.login-page,.pwd-page{max-width:100%;overflow-x:clip}@supports (padding-top: env(safe-area-inset-top)){.app-header{padding-top:env(safe-area-inset-top)}.admin-header{top:env(safe-area-inset-top)}}@supports (padding-bottom: env(safe-area-inset-bottom)){.app-footer,.admin-layout__content{padding-bottom:calc(var(--spacing-lg, 24px) + env(safe-area-inset-bottom))}}@media (max-width: 767px){.component-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}.component-table td,.component-table th{white-space:nowrap}.admin-layout__content .data-table{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}.admin-layout__content .data-table th,.admin-layout__content .data-table td{white-space:nowrap}}@media (max-width: 767px){.modal,.app-modal,.admin-modal,.component-dialog{max-width:calc(100vw - 32px)!important;max-height:92vh!important;overflow-y:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 479px){.layout-container{padding-left:12px;padding-right:12px}.public-layout__content,.admin-layout__content{padding:12px}.app-header__row{padding:0 12px}}
