:root{--xty-primary:#0f766e;--xty-primary-hover:#0d9488;--xty-primary-soft:rgba(15,118,110,0.1);--xty-sidebar:#0f172a;--xty-sidebar-mid:#1e293b;--xty-sidebar-dark:#020617;--xty-header:rgba(255,255,255,0.92);--xty-bg:#eef2f6;--xty-surface:#ffffff;--xty-border:#e2e8f0;--xty-text:#1e293b;--xty-text-secondary:#64748b;--xty-green:#059669;--xty-green-soft:#ecfdf5;--xty-orange:#d97706;--xty-orange-soft:#fffbeb;--xty-red:#dc2626;--xty-red-soft:#fef2f2;--xty-teal:#0f766e;--xty-teal-soft:#f0fdfa;--xty-blue:#2563eb;--xty-blue-soft:#eff6ff;--xty-shadow-sm:0 1px 2px rgba(15,23,42,0.05);--xty-shadow:0 4px 16px rgba(15,23,42,0.06);--xty-shadow-lg:0 12px 40px rgba(15,23,42,0.12);--xty-radius:10px;--xty-radius-sm:8px}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;overflow:hidden;font-family:PingFang SC,Hiragino Sans GB,Noto Sans SC,Microsoft YaHei,sans-serif;background:radial-gradient(ellipse 80% 50% at 100% 0,rgba(15,118,110,.06),transparent),radial-gradient(ellipse 60% 40% at 0 100%,rgba(37,99,235,.04),transparent),var(--xty-bg);color:var(--xty-text);-webkit-font-smoothing:antialiased}body:has(.login-page){overflow:auto}a{color:inherit;text-decoration:none}.login-page{min-height:100vh;background:url(/login-bg.jpg) 50%/cover no-repeat;position:relative;display:flex;flex-direction:column}.login-page:before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(15,23,42,.72),rgba(15,118,110,.35) 50%,rgba(15,23,42,.55))}.login-header{position:relative;z-index:1;padding:28px 40px;gap:14px}.login-header,.login-logo-mark{display:flex;align-items:center}.login-logo-mark{width:48px;height:48px;border-radius:12px;background:linear-gradient(145deg,#14b8a6,#0f766e);color:#fff;justify-content:center;font-size:22px;font-weight:700;box-shadow:0 8px 24px rgba(15,118,110,.45)}.login-brand h1{margin:0;color:#fff;font-size:28px;font-weight:700;letter-spacing:3px;line-height:1.1}.login-brand p{margin:4px 0 0;color:rgba(255,255,255,.75);font-size:11px;letter-spacing:3px}.login-body{position:relative;z-index:1;flex:1 1;display:flex;align-items:center;justify-content:center;gap:80px;padding:0 40px 80px}.login-slogan h2{margin:0;color:#fff;font-size:56px;font-weight:700;letter-spacing:2px;text-shadow:0 4px 24px rgba(0,0,0,.35)}.login-slogan p{margin:14px 0 0;color:rgba(255,255,255,.92);font-size:26px;font-weight:400;text-shadow:0 2px 12px rgba(0,0,0,.3)}.login-card{width:400px;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:16px;box-shadow:var(--xty-shadow-lg);overflow:hidden;border:1px solid rgba(255,255,255,.5)}.login-card-header{padding:18px 24px;border-bottom:1px solid var(--xty-border);font-size:16px;font-weight:600;color:var(--xty-text);display:flex;align-items:center;gap:8px;background:linear-gradient(180deg,#f8fafc,#fff)}.login-card-body{padding:28px 28px 32px}.login-footer{position:relative;z-index:1;text-align:center;color:rgba(255,255,255,.8);font-size:13px;padding:16px}.admin-shell{height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;background:transparent}.admin-shell,.admin-sider{display:flex;overflow:hidden}.admin-sider{width:248px;height:100%;background:#ffffff;color:#1f2937;flex-direction:column;flex-shrink:0;transition:width .22s ease;border-right:1px solid #e2e8f0;box-shadow:1px 0 0 rgba(15,23,42,.04);z-index:20}.admin-sider.collapsed{width:68px}.sider-logo{height:60px;display:flex;gap:12px;background:#fff;font-size:18px;letter-spacing:.5px;white-space:nowrap;overflow:hidden;padding:0 18px;border-bottom:1px solid #e2e8f0;color:#0f172a}.sider-logo,.sider-logo-badge{flex-shrink:0;align-items:center;font-weight:700}.sider-logo-badge{width:34px;height:34px;border-radius:9px;background:linear-gradient(145deg,#14b8a6,#0f766e);color:#fff;display:inline-flex;justify-content:center;font-size:16px;box-shadow:0 4px 12px rgba(15,118,110,.28)}.sider-logo-text{overflow:hidden;text-overflow:ellipsis}.sider-menu{flex:1 1;min-height:0;overflow-x:hidden;overflow-y:auto;padding:10px 12px 14px;scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent;overflow-anchor:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.sider-user{flex-shrink:0;padding:14px 16px 16px;border-top:1px solid #eef0f3;background:#fff}.sider-user-name{font-size:15px;font-weight:700;color:#0f172a;line-height:1.3}.sider-user-role{margin-top:2px;font-size:13px;color:#64748b;line-height:1.4}.sider-logout{margin-top:10px;padding:0;border:none;background:none;color:var(--xty-primary);font-size:14px;cursor:pointer;font-family:inherit;font-weight:500}.sider-logout:hover{color:var(--xty-primary-hover);text-decoration:underline}.admin-main{flex:1 1;display:flex;flex-direction:column;min-width:0;min-height:0;height:100%;overflow:hidden}.admin-header{height:56px;flex-shrink:0;background:var(--xty-header);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--xty-border);display:flex;align-items:center;padding:0 20px;gap:14px;box-shadow:var(--xty-shadow-sm)}.header-icon-btn{width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--xty-text-secondary);transition:background .15s,color .15s}.header-icon-btn:hover{background:var(--xty-primary-soft);color:var(--xty-primary)}.header-notice{flex:1 1;text-align:center;color:var(--xty-text-secondary);background:linear-gradient(90deg,transparent,rgba(15,118,110,.06),transparent);padding:6px 12px}.header-notice,.header-user{font-size:13px;border-radius:999px}.header-user{display:inline-flex;align-items:center;gap:8px;cursor:pointer;padding:4px 10px 4px 4px;transition:background .15s;color:var(--xty-text)}.header-user:hover{background:#f1f5f9}.header-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(145deg,#14b8a6,#0f766e);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px}.admin-tabs{background:rgba(255,255,255,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--xty-border);padding:8px 12px 0;min-height:44px;flex-shrink:0;display:flex;align-items:flex-end;gap:4px;overflow-x:auto}.admin-tab{padding:8px 14px;font-size:13px;color:var(--xty-text-secondary);cursor:pointer;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;white-space:nowrap;display:flex;align-items:center;gap:6px;transition:all .15s}.admin-tab:hover{color:var(--xty-primary);background:rgba(15,118,110,.06)}.admin-tab.active{background:var(--xty-surface);color:var(--xty-primary);border-color:var(--xty-border);font-weight:600;box-shadow:0 -2px 0 var(--xty-primary) inset}.admin-tab-close{margin-left:2px;width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;opacity:.45;font-size:14px;line-height:1;transition:all .15s}.admin-tab-close:hover{opacity:1;background:rgba(220,38,38,.12);color:var(--xty-red)}.admin-content{flex:1 1;min-height:0;padding:16px;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.admin-footer{flex-shrink:0;text-align:center;font-size:12px;color:#94a3b8;padding:10px;background:rgba(255,255,255,.65);border-top:1px solid var(--xty-border)}.admin-content .ant-table-tbody>tr{cursor:pointer}.admin-content .ant-table-tbody>tr.ant-table-row-selected>td{background:#f0fdfa!important}.toolbar{gap:6px;padding-bottom:12px;border-bottom:1px solid #f1f5f9}.filter-bar,.toolbar{display:flex;flex-wrap:wrap;align-items:center;margin-bottom:12px}.filter-bar{gap:8px;padding:10px 12px;background:#fff;border:1px solid var(--xty-border);border-radius:6px}.filter-bar>span:first-child{font-weight:600;margin-right:4px}.filter-bar label,.filter-bar>span:first-child{font-size:12px;color:var(--xty-text-secondary)}.filter-bar .ant-input,.filter-bar .ant-select-selector{border-radius:6px!important}.home-shortcuts{display:flex;flex-wrap:wrap;gap:16px;padding:12px 0}.home-card{width:168px;height:108px;background:linear-gradient(145deg,#0f766e,#0d9488 55%,#14b8a6);color:#fff;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:pointer;box-shadow:0 8px 20px rgba(15,118,110,.28);transition:transform .18s ease,box-shadow .18s ease;position:relative;overflow:hidden}.home-card:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 50%);pointer-events:none}.home-card:hover{transform:translateY(-3px);box-shadow:0 14px 28px rgba(15,118,110,.35)}.home-card span{font-size:14px;font-weight:500;position:relative;z-index:1}.btn-xty{border:1px solid var(--xty-border);background:#fff;color:var(--xty-text);padding:0 12px;height:32px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background .12s ease,border-color .12s ease,color .12s ease;box-shadow:none;letter-spacing:0;white-space:nowrap;line-height:1}.btn-xty:active:not(:disabled){background:#f1f5f9}.btn-xty:disabled{opacity:.45;cursor:not-allowed}.btn-xty:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1;color:var(--xty-text)}.btn-xty.primary,.btn-xty.teal{background:var(--xty-primary);border-color:var(--xty-primary);color:#fff}.btn-xty.primary:hover:not(:disabled),.btn-xty.teal:hover:not(:disabled){background:var(--xty-primary-hover);border-color:var(--xty-primary-hover);color:#fff}.btn-xty.primary:active:not(:disabled),.btn-xty.teal:active:not(:disabled){background:#0b5f59;border-color:#0b5f59;color:#fff}.btn-xty.danger,.btn-xty.red{background:#fff;border-color:#fecaca;color:var(--xty-red)}.btn-xty.danger:hover:not(:disabled),.btn-xty.red:hover:not(:disabled){background:var(--xty-red-soft);border-color:#f87171;color:#b91c1c}.btn-xty.green{background:#fff;border-color:#a7f3d0;color:var(--xty-green)}.btn-xty.green:hover:not(:disabled){background:var(--xty-green-soft);border-color:#6ee7b7;color:#047857}.btn-xty.orange{background:#fff;border-color:#fde68a;color:var(--xty-orange)}.btn-xty.orange:hover:not(:disabled){background:var(--xty-orange-soft);border-color:#fcd34d;color:#b45309}.btn-xty.blue{background:#fff;border-color:#bfdbfe;color:var(--xty-blue)}.btn-xty.blue:hover:not(:disabled){background:var(--xty-blue-soft);border-color:#93c5fd;color:#1d4ed8}.btn-xty.ghost{background:transparent;color:var(--xty-text-secondary);border-color:transparent}.btn-xty.ghost:hover:not(:disabled){background:#f1f5f9;color:var(--xty-text);border-color:transparent}.btn-xty.soft-green{background:#fff;color:var(--xty-green);border-color:#d1fae5}.btn-xty.soft-orange{background:#fff;color:#b45309;border-color:#fef3c7}.btn-xty.soft-red{background:#fff;color:var(--xty-red);border-color:#fecaca}.btn-xty.soft-teal{background:#fff;color:var(--xty-teal);border-color:#ccfbf1}.btn-xty.soft-blue{background:#fff;color:var(--xty-blue);border-color:#dbeafe}.btn-xty.soft-green:hover:not(:disabled){background:var(--xty-green-soft);border-color:#a7f3d0}.btn-xty.soft-orange:hover:not(:disabled){background:var(--xty-orange-soft);border-color:#fde68a}.btn-xty.soft-red:hover:not(:disabled){background:var(--xty-red-soft);border-color:#fca5a5}.btn-xty.soft-teal:hover:not(:disabled){background:var(--xty-teal-soft);border-color:#99f6e4}.btn-xty.soft-blue:hover:not(:disabled){background:var(--xty-blue-soft);border-color:#bfdbfe}.menu-group{margin-bottom:8px}.menu-group-title{padding:12px 14px;margin:0;color:#0f172a;font-size:15px;font-weight:700;letter-spacing:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center;border-radius:10px;transition:background .15s,color .15s,border-color .15s;background:#f8fafc;border:1px solid #e2e8f0}.menu-group-left{gap:11px;min-width:0}.menu-group-icon,.menu-group-left{display:inline-flex;align-items:center}.menu-group-icon{justify-content:center;width:26px;height:26px;border-radius:7px;background:var(--xty-teal-soft);color:var(--xty-primary);font-size:14px;flex-shrink:0}.menu-group-label{font-weight:700;color:#0f172a}.menu-group-arrow{font-size:11px;color:#64748b;transition:transform .18s ease;transform:rotate(-90deg)}.menu-group-arrow.open{transform:rotate(0deg);color:var(--xty-primary)}.menu-group-title:hover{background:#f1f5f9;border-color:#cbd5e1}.menu-group-title.open{background:var(--xty-teal-soft);border-color:#99f6e4;color:#115e59}.menu-group-title.open .menu-group-label{color:#115e59}.menu-group-title.open .menu-group-icon{background:#ccfbf1;color:var(--xty-primary)}.menu-group-children{margin:6px 0 10px 14px;padding:4px 0 4px 14px;border-left:2px solid #cbd5e1}.menu-item{padding:10px 12px 10px 14px;margin:2px 0;font-size:14px;font-weight:500;color:#334155;cursor:pointer;border-radius:8px;transition:background .15s,color .15s;position:relative;line-height:1.45}.menu-item:hover{color:#0f172a;background:#f1f5f9}.menu-item.active{color:#0f766e;background:var(--xty-teal-soft);font-weight:600}.menu-item.active:before{content:"";position:absolute;left:-15px;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:2px;background:var(--xty-primary)}.page-panel .ant-table{border-radius:var(--xty-radius-sm);overflow:hidden}.page-panel .ant-table-thead>tr>th{background:#f8fafc!important;color:var(--xty-text)!important;font-weight:600!important;font-size:13px}.page-panel .ant-table-tbody>tr:hover>td{background:#f0fdfa!important}.page-panel .ant-pagination{margin-top:4px}@media (max-width:900px){.login-body{flex-direction:column;gap:32px}.login-slogan h2{font-size:36px}.login-slogan p{font-size:18px}.admin-content{padding:12px}.page-panel{padding:14px}}