*{box-sizing:border-box;margin:0;padding:0}body{color:#333;background:#f0f2f5;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.top-nav{color:#fff;z-index:100;background:linear-gradient(135deg,#ff6b35,#f7931e);justify-content:space-between;align-items:center;height:56px;padding:0 24px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #00000026}.nav-brand{align-items:center;gap:10px;font-size:18px;font-weight:700;display:flex}.nav-brand .logo{font-size:24px}.nav-links{align-items:center;gap:20px;display:flex}.nav-links a{color:#fff;opacity:.9;font-size:14px;text-decoration:none;transition:opacity .2s}.nav-links a:hover,.nav-links a.router-link-active{opacity:1;text-decoration:underline}.nav-user{opacity:.8;font-size:13px}main{max-width:1400px;margin:0 auto;padding:24px}.login-page{background:linear-gradient(135deg,#ff6b35 0%,#f7931e 50%,#ffb347 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{text-align:center;background:#fff;border-radius:16px;width:400px;padding:48px 40px;box-shadow:0 20px 60px #0003}.login-card h1{color:#333;margin-bottom:4px;font-size:28px}.login-card .subtitle{color:#999;margin-bottom:32px;font-size:14px}.form-group{text-align:left;margin-bottom:20px}.form-group label{color:#666;margin-bottom:6px;font-size:13px;font-weight:500;display:block}.form-group input{border:1px solid #ddd;border-radius:8px;outline:none;width:100%;padding:12px 16px;font-size:15px;transition:border-color .2s}.form-group input:focus{border-color:#ff6b35;box-shadow:0 0 0 3px #ff6b351a}.error-msg{color:#e74c3c;background:#fdeaea;border-radius:6px;margin-bottom:12px;padding:8px 12px;font-size:13px}.success-msg{color:#27ae60;background:#eafaf1;border-radius:6px;margin-bottom:12px;padding:8px 12px;font-size:13px}button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff6b35,#f7931e);border:none;border-radius:8px;width:100%;padding:12px;font-size:16px;font-weight:600;transition:opacity .2s}button:hover{opacity:.9}button:disabled{opacity:.5;cursor:not-allowed}.dashboard h2{color:#333;margin-bottom:20px;font-size:22px}.stat-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-card{text-align:center;background:#fff;border-radius:12px;padding:20px;transition:transform .2s;box-shadow:0 2px 8px #0000000f}.stat-card:hover{transform:translateY(-2px)}.stat-value{color:#ff6b35;font-size:32px;font-weight:700}.stat-label{color:#999;margin-top:4px;font-size:13px}.info-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:32px;display:grid}.info-card{background:#fff;border-radius:12px;padding:20px;box-shadow:0 2px 8px #0000000f}.info-card h3{color:#333;margin-bottom:12px;font-size:16px}.info-table{border-collapse:collapse;width:100%}.info-table td{border-bottom:1px solid #f5f5f5;padding:6px 0;font-size:13px}.info-table td:first-child{color:#999;width:40%}.mem-bar{align-items:center;gap:8px;display:flex}.mem-fill{background:linear-gradient(90deg,#27ae60,#f39c12,#e74c3c);border-radius:4px;min-width:2px;height:8px;transition:width .3s}.mem-bar span{color:#666;white-space:nowrap;font-size:12px}.dashboard h3{color:#333;margin-bottom:16px;font-size:18px}.table-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.table-card{text-align:center;cursor:pointer;background:#fff;border:2px solid #0000;border-radius:10px;padding:20px;transition:all .2s;box-shadow:0 2px 6px #0000000f}.table-card:hover{border-color:#ff6b35;transform:translateY(-2px)}.table-card-count{color:#ff6b35;font-size:28px;font-weight:700}.table-card-label{color:#333;margin-top:4px;font-size:14px}.table-card-name{color:#bbb;margin-top:2px;font-size:11px}.table-card.emotional{border-left:3px solid #e91e63}.table-card.emotional:hover{border-color:#e91e63}.table-card.emotional .table-card-count{color:#e91e63}.table-view h2{margin-bottom:12px;font-size:20px}.table-name{color:#999;font-size:13px;font-weight:400}.table-header{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:16px;display:flex}.back-btn{background:#666;border-radius:6px;width:auto;padding:8px 16px;font-size:13px}.table-search{gap:8px;margin-left:auto;display:flex}.table-search input{border:1px solid #ddd;border-radius:6px;outline:none;width:200px;padding:8px 12px;font-size:13px}.table-search input:focus{border-color:#ff6b35}.table-search button{width:auto;padding:8px 16px;font-size:13px}.table-info{color:#999;margin-bottom:12px;font-size:13px}.table-wrapper{background:#fff;border-radius:10px;overflow-x:auto;box-shadow:0 2px 8px #0000000f}table{border-collapse:collapse;width:100%;font-size:13px}thead{background:#fafafa;position:sticky;top:0}th{text-align:left;color:#555;white-space:nowrap;border-bottom:2px solid #eee;padding:12px 14px;font-weight:600}td{text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #f0f0f0;max-width:250px;padding:10px 14px;overflow:hidden}tr:hover td{background:#fff8f5}.cell-null{color:#ccc;font-style:italic}.cell-bool{text-align:center}.badge-true{color:#27ae60;background:#eafaf1;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge-false{color:#999;background:#f5f5f5;border-radius:4px;padding:2px 8px;font-size:11px;display:inline-block}.avatar-thumb{object-fit:cover;border-radius:50%;width:32px;height:32px}.json-cell{color:#666;background:#f8f8f8;border-radius:3px;padding:2px 6px;font-size:11px}.pagination{justify-content:center;align-items:center;gap:6px;margin-top:20px;display:flex}.pagination button{color:#333;background:#fff;border:1px solid #ddd;border-radius:6px;width:auto;padding:8px 14px;font-size:13px}.pagination button:hover:not(:disabled){color:#ff6b35;background:#fff0eb;border-color:#ff6b35}.pagination button.active{color:#fff;background:#ff6b35;border-color:#ff6b35}.pagination button:disabled{opacity:.4}.change-password{max-width:480px;margin:0 auto}.password-card{background:#fff;border-radius:12px;margin-top:16px;padding:32px;box-shadow:0 2px 8px #0000000f}.password-card h2{margin-bottom:24px}.password-card button{margin-top:8px}
