:root{--bg:#0c111c;--surface:#141b29d9;--surface-2:#1c2638eb;--border:#ffffff14;--text:#eef2fb;--muted:#8b95ad;--accent:#ffba2a;--accent-2:#43d4ff;--danger:#ff5b6f;--ok:#6cf09a}*{box-sizing:border-box}html,body,#app{background:radial-gradient(circle at top, #1a2336 0%, var(--bg) 70%);height:100%;color:var(--text);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,Microsoft YaHei,Arial,sans-serif;font-size:14px}a{color:var(--accent-2);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}.app-shell{grid-template-columns:220px 1fr;height:100dvh;min-height:0;display:grid;overflow:hidden}.nav-toggle,.nav-backdrop{display:none}@media (width<=820px){.app-shell{grid-template-columns:1fr}.nav-toggle{z-index:50;border:1px solid var(--border);background:var(--surface-2);width:42px;height:42px;color:var(--text);cursor:pointer;border-radius:10px;font-size:20px;display:block;position:fixed;top:12px;left:12px}.sidebar{z-index:60;width:240px;transition:transform .25s;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-105%)}.app-shell.nav-open .sidebar{transform:translate(0)}.app-shell.nav-open .nav-backdrop{z-index:55;background:#00000080;display:block;position:fixed;inset:0}.main{padding-top:60px}}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:4px;min-height:0;padding:24px 16px;display:flex;overflow-y:auto}.sidebar h1{letter-spacing:.04em;color:var(--accent);margin:0 0 8px 4px;font-size:16px}.sidebar h1.brand{align-items:center;gap:10px;display:flex}.sidebar h1 .brand-logo{background:#fff;border-radius:9px;flex-shrink:0;width:36px;height:36px;padding:4px}.sidebar h1 small{color:var(--muted);letter-spacing:0;font-size:11px;font-weight:400;display:block}.sidebar a{color:var(--text);border-radius:8px;padding:10px 12px;font-size:13px;display:block}.sidebar a:hover{background:#ffffff0d;text-decoration:none}.sidebar a.router-link-active{color:var(--accent-2);background:#43d4ff29}.sidebar .nav-section-label{color:var(--muted);align-items:center;gap:8px;margin:12px 4px 4px;font-size:11px;display:flex}.sidebar .nav-section-label:before,.sidebar .nav-section-label:after{content:"";background:var(--border);flex:1;height:1px}.sidebar .user-tag{border:1px solid var(--border);background:#0003;border-radius:8px;margin-top:auto;padding:12px}.sidebar .user-tag span{color:var(--muted);font-size:11px;display:block}.sidebar .brand-footer{border-top:1px solid var(--border);color:var(--muted);text-align:center;margin-top:14px;padding-top:12px;font-size:11px;line-height:1.6}.sidebar .brand-footer small{opacity:.7;font-size:10px;display:block}.main{min-width:0;height:100%;min-height:0;padding:14px 18px;overflow:hidden}.page-title{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.page-title h2{margin:0;font-size:20px}.btn{border:1px solid var(--border);color:var(--text);background:#ffffff0a;border-radius:6px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;transition:all .15s;display:inline-flex}.btn:hover{background:#ffffff14}.btn.primary{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}.btn.primary:hover{filter:brightness(1.05)}.btn.danger{color:var(--danger);border-color:#ff5b6f4d}.btn.danger:hover{background:#ff5b6f1a}.btn.ghost{background:0 0}.btn[disabled]{opacity:.5;cursor:not-allowed}table{border-collapse:collapse;background:var(--surface);border-radius:8px;width:100%;overflow:hidden}th,td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px;font-size:13px}th{background:var(--surface-2);color:var(--muted);font-weight:600}tr:last-child td{border-bottom:0}tr:hover td{background:#ffffff05}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px}.card+.card{margin-top:16px}.field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.field label{color:var(--muted);font-size:12px}.field input,.field select,.field textarea{border:1px solid var(--border);color:var(--text);background:#00000040;border-radius:6px;padding:8px 12px;font-family:inherit;font-size:13px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent-2);outline:none}.search-input{border:1px solid var(--border);height:36px;color:var(--text);box-sizing:border-box;background:#00000040;border-radius:8px;padding:0 12px;font-family:inherit;font-size:13px}.search-input::placeholder{color:var(--muted)}.search-input:focus{border-color:var(--accent-2);outline:none}select{appearance:none;border:1px solid var(--border);color:var(--text);cursor:pointer;background-color:#00000040;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1L6 6L11 1' stroke='%238b95ad' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 10px center;background-repeat:no-repeat;border-radius:6px;padding:8px 32px 8px 12px;font-family:inherit;font-size:13px;transition:border-color .15s,background-color .15s}select:hover{border-color:#43d4ff66}select:focus{border-color:var(--accent-2);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1L6 6L11 1' stroke='%2343d4ff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");outline:none}select:disabled{opacity:.5;cursor:not-allowed}select option,select optgroup{color:var(--text);background-color:#1a2336;padding:8px 10px}select option:checked{color:var(--accent-2);background:linear-gradient(#43d4ff2e,#43d4ff2e);font-weight:600}select option[disabled]{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.row>*{flex:none}.spacer{flex:1}.tag{color:var(--muted);border:1px solid var(--border);background:#ffffff0f;border-radius:999px;padding:2px 8px;font-size:11px;display:inline-block}.tag.green{color:var(--ok);background:#6cf09a14;border-color:#6cf09a4d}.tag.amber{color:var(--accent);background:#ffba2a14;border-color:#ffba2a4d}.tag.red{color:var(--danger);background:#ff5b6f14;border-color:#ff5b6f4d}.tag.blue{color:var(--accent-2);background:#43d4ff14;border-color:#43d4ff4d}.modal-mask{z-index:999;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;min-width:420px;max-width:720px;max-height:80vh;padding:24px;overflow:auto}.modal h3{margin:0 0 16px}.empty{color:var(--muted);text-align:center;padding:40px 20px}.table-page{flex-direction:column;height:100%;min-height:0;display:flex}.scroll-page{height:100%;min-height:0;overflow:auto}.table-page>.page-title{flex:none}.table-panel{border:1px solid var(--border);background:var(--surface);border-radius:8px;flex:1;min-height:0;position:relative;overflow:auto}.table-panel table{border-radius:0;min-width:920px}.table-panel th{z-index:1;position:sticky;top:0}.table-panel .empty{place-items:center;min-height:180px;display:grid}.table-panel .loading-mask,.list-loading-mask{color:var(--muted);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0c111c73;place-items:center;display:grid;position:absolute;inset:0}.table-pager{flex:none;justify-content:space-between;align-items:center;gap:12px;padding-top:14px;display:flex}.pager-meta{color:var(--muted);font-size:13px}.pager-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.pager-current{color:var(--muted);white-space:nowrap;font-size:13px}@media (width<=820px){.table-pager{flex-direction:column;align-items:stretch}.pager-controls{justify-content:flex-start}}.login-shell{background:radial-gradient(circle at top, #1a2336 0%, var(--bg) 70%);place-items:center;gap:18px;min-height:100vh;display:grid}.login-shell .brand-copy{color:var(--muted);text-align:center;margin:0;font-size:12px}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:380px;padding:32px}.login-card .login-logo{width:64px;height:64px;margin:0 auto 14px;display:block}.login-card h1{color:var(--accent);text-align:center;margin:0}.login-card p{color:var(--muted);text-align:center;margin:4px 0 24px}.tab-row{gap:8px;margin-bottom:16px;display:flex}.tab-row .tab{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;flex:1;padding:8px}.tab-row .tab.active{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}.error-msg{color:var(--danger);margin-top:8px;font-size:12px}.ok-msg{color:var(--ok);margin-top:8px;font-size:12px}
