.admin-layout{display:flex;min-height:100vh;background:var(--c-bg,#eceeef)}.admin-sidebar{width:260px;background:linear-gradient(180deg, #16191d 0, #1c2128 100%);color:#fff;display:flex;flex-direction:column;position:fixed;height:100vh;overflow-y:auto;z-index:100;box-shadow:4px 0 20px rgba(0,0,0,.15)}.sidebar-header{padding:2rem 1.5rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-header h2{font-size:1.4rem;margin:0;font-weight:700;letter-spacing:.5px}.sidebar-nav{flex:1;padding:.75rem 0}.sidebar-nav ul{list-style:none;padding:0;margin:0}.sidebar-nav a{display:block;padding:.85rem 1.75rem;color:rgba(255,255,255,.65);transition:all .25s ease;font-weight:500;font-size:.95rem;border-left:3px solid transparent}.sidebar-nav a:hover{background:rgba(255,255,255,.08);color:#fff}.sidebar-nav a.active{background:rgba(255,255,255,.12);color:#fff;border-left-color:#9bc9c5}.sidebar-footer{padding:1.5rem;border-top:1px solid rgba(255,255,255,.1)}.sidebar-footer p{color:rgba(255,255,255,.6);margin-bottom:1rem;font-size:.9rem}.sidebar-footer .btn-outline{border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.7);width:100%}.sidebar-footer .btn-outline:hover{border-color:rgba(255,255,255,.5);color:#fff;background:rgba(255,255,255,.08)}.admin-main{flex:1;margin-left:260px;padding:2.5rem;background:var(--c-bg,#eceeef);min-height:100vh}/* 仪表盘 · 冷灰台账 */
.page-title{font-size:1.5rem;margin:0 0 1.5rem;color:var(--c-text,#14181c);font-weight:700;letter-spacing:-.02em}.dash-header .page-title{margin-bottom:0}
.dash-header{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--c-border,#d4d8db)}
.dash-subtitle{margin:.35rem 0 0;font-size:.875rem;color:var(--c-text-3,#6b7582);font-weight:500;letter-spacing:.02em}
.dash-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-bottom:1.5rem;background:var(--c-surface,#f7f8f9);border:1px solid var(--c-border,#d4d8db)}
.dash-metric{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.15rem;border-right:1px solid var(--c-border,#d4d8db);min-width:0}
.dash-metric:last-child{border-right:none}
.dash-metric-label{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--c-text-3,#6b7582)}
.dash-metric-value{font-size:1.65rem;font-weight:700;line-height:1.1;color:var(--c-text,#14181c);font-variant-numeric:tabular-nums}
.dash-metric--pending{background:var(--c-warn-soft,#f3ead0)}
.dash-metric--pending .dash-metric-label{color:var(--c-warn,#a16207)}
.dash-metric--pending .dash-metric-value{color:var(--c-warn,#a16207)}
.dash-todo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.dash-panel{background:var(--c-surface,#f7f8f9);border:1px solid var(--c-border,#d4d8db);display:flex;flex-direction:column;min-height:0}
.dash-panel-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--c-border,#d4d8db);background:var(--c-bg,#eceeef)}
.dash-panel-title{margin:0;font-size:.95rem;font-weight:650;color:var(--c-text,#14181c);display:flex;align-items:center;gap:.5rem}
.dash-count{display:inline-block;min-width:1.4rem;padding:.1rem .4rem;font-size:.75rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--c-warn,#a16207);background:var(--c-warn-soft,#f3ead0);border:1px solid var(--c-border,#d4d8db);text-align:center}
.dash-goto{font-size:.8rem;font-weight:600;color:var(--c-primary,#0b6e6a);text-decoration:none;white-space:nowrap}
.dash-goto:hover{text-decoration:underline;color:var(--c-primary-hover,#085853)}
.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem}
.dashboard-card{background:var(--c-surface,#f7f8f9);padding:1.25rem 1.35rem;border:1px solid var(--c-border,#d4d8db);border-radius:0;box-shadow:none}
.dashboard-card h3{font-size:1rem;margin:0 0 .85rem;padding-bottom:.65rem;border-bottom:1px solid var(--c-border,#d4d8db);color:var(--c-text-2,#3d4650);font-weight:650}
.recent-list{max-height:360px;overflow-y:auto;padding:.15rem 0}
.recent-item{padding:.75rem 1.1rem;border-bottom:1px solid var(--c-border-2,#e4e7e9);display:flex;justify-content:space-between;align-items:center;gap:.75rem;cursor:pointer;transition:background .12s}
.recent-item:hover{background:var(--c-bg,#eceeef)}
.recent-item:last-child{border-bottom:none}
.recent-item-info{min-width:0}
.recent-item-info h4{font-size:.9rem;margin:0 0 .15rem;color:var(--c-text,#14181c);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recent-item-meta{font-size:.78rem;color:var(--c-text-3,#6b7582)}
.dash-panel .empty-text,.dash-panel .loading{padding:2rem 1rem;font-size:.875rem}.status-badge{padding:.2rem .7rem;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap}.status-pending{background:#fef3c7;color:#92400e}.status-approved{background:#d1fae5;color:#065f46}.status-rejected{background:#fee2e2;color:#991b1b}.role-badge{padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600}.role-admin{background:#e6f3f2;color:#0a5551}.role-user{background:#cfe8e6;color:#0a5551}.filter-bar{display:flex;gap:.75rem;margin-bottom:1.5rem;flex-wrap:wrap}.filter-bar button.active{background:#0f6b66;color:#fff;border-color:#0f6b66}.search-input-inline{padding:.55rem 1rem;border:1px solid #d1d5db;border-radius:10px;font-size:.9rem;min-width:250px;transition:border-color .2s,box-shadow .2s}.search-input-inline:focus{outline:0;border-color:#0f6b66;box-shadow:0 0 0 3px rgba(99,102,241,.1)}.review-list{display:flex;flex-direction:column;gap:1rem}.review-item{background:#fff;padding:1.5rem;border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.04);transition:box-shadow .2s}.review-item:hover{box-shadow:0 2px 8px rgba(0,0,0,.08),0 8px 20px rgba(0,0,0,.06)}.review-item-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.review-item-title{font-size:1.15rem;font-weight:700;margin-bottom:.3rem;color:#16191d}.review-subtitle{font-size:1rem;font-weight:600;margin-bottom:.5rem;color:#4b5563}.review-item-meta{font-size:.85rem;color:#9ca3af}.review-item-meta a{color:#0f6b66;text-decoration:none}.review-item-meta a:hover{text-decoration:underline}.review-item-content{color:#4b5563;line-height:1.7;margin-bottom:1rem;font-size:.95rem}.review-pros-cons{padding:.75rem 1rem;background:#f9fafb;border-radius:10px;margin-bottom:1rem;font-size:.9rem;line-height:1.7}.review-pros-cons .pros{color:#065f46;margin-bottom:.25rem}.review-pros-cons .cons{color:#991b1b}.review-item-actions{display:flex;gap:.75rem;padding-top:1rem;border-top:1px solid #f3f4f6}.btn-success{background:#10b981;color:#fff;border:1px solid #10b981;padding:.5rem 1.25rem;border-radius:10px;cursor:pointer;font-weight:600;font-size:.9rem;transition:all .2s}.btn-success:hover{background:#059669;border-color:#059669}.btn-danger{background:0 0;color:#ef4444;border:1px solid #ef4444;padding:.5rem 1.25rem;border-radius:10px;cursor:pointer;font-weight:600;font-size:.9rem;transition:all .2s}.btn-danger:hover{background:#ef4444;color:#fff}.btn-sm{padding:.3rem .75rem;font-size:.8rem;border-radius:8px}.btn-sm.btn-outline{border:1px solid #0f6b66;color:#0f6b66;background:0 0;cursor:pointer;font-weight:600;transition:all .2s}.btn-sm.btn-outline:hover{background:#0f6b66;color:#fff}.users-table-wrapper{overflow-x:auto;border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.04)}.users-table{width:100%;border-collapse:collapse;background:#fff;font-size:.9rem}.users-table thead{background:#f9fafb}.users-table th{padding:.85rem 1rem;text-align:left;font-weight:600;color:#6b7280;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #e5e7eb}.users-table td{padding:.75rem 1rem;border-bottom:1px solid #f3f4f6;color:#374151}.users-table tbody tr:hover{background:#fafbff}.action-cell{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.self-badge{font-size:.75rem;color:#9ca3af;font-style:italic}.system-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:1.25rem}.sys-info-list{display:flex;flex-direction:column}.sys-row{display:flex;justify-content:space-between;align-items:center;padding:.7rem 0;border-bottom:1px solid #f3f4f6}.sys-row:last-child{border-bottom:none}.sys-label{color:#6b7280;font-size:.9rem;font-weight:500}.sys-value{color:#16191d;font-weight:600;font-size:.9rem}.text-success{color:#10b981!important}.text-danger{color:#ef4444!important}.empty-text{text-align:center;color:#9ca3af;padding:3rem 1rem;font-size:.95rem}.loading{text-align:center;padding:3rem 1rem;color:#9ca3af}.text-ellipsis{max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.btn-sm.btn-danger{background:0 0;color:#ef4444;border:1px solid #ef4444;cursor:pointer;font-weight:600;transition:all .2s}.btn-sm.btn-danger:hover{background:#ef4444;color:#fff}.rating-input{display:flex;gap:.25rem}.rating-input .star-btn{background:0 0;border:none;font-size:1.5rem;cursor:pointer;color:#d1d5db;transition:color .15s,transform .15s;padding:0;line-height:1}.rating-input .star-btn.active,.rating-input .star-btn:hover{color:#f59e0b;transform:scale(1.15)}.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:2000;align-items:center;justify-content:center}.modal.active{display:flex}.modal-content{background:#fff;border-radius:16px;padding:2rem;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px rgba(0,0,0,.2)}.modal-large{max-width:650px}.modal-close{position:absolute;top:1rem;right:1.25rem;font-size:1.5rem;cursor:pointer;color:#9ca3af;transition:color .2s;line-height:1}.modal-close:hover{color:#374151}.modal h2{font-size:1.35rem;margin-bottom:1.25rem;color:#16191d}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.4rem;font-weight:600;font-size:.9rem;color:#374151}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.6rem .85rem;border:1px solid #d1d5db;border-radius:10px;font-size:.95rem;transition:border-color .2s,box-shadow .2s;font-family:inherit;box-sizing:border-box}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:0;border-color:#0f6b66;box-shadow:0 0 0 3px rgba(99,102,241,.1)}.form-note{font-size:.8rem;color:#9ca3af;margin-bottom:1rem;text-align:center}.btn-full{width:100%;text-align:center;padding:.7rem;font-size:1rem}.tab-content{display:none}.tab-content.active{display:block}.mobile-menu-toggle{display:none;position:fixed;top:1rem;left:1rem;z-index:1001;background:#0f6b66;color:#fff;border:none;padding:.6rem 1rem;border-radius:10px;cursor:pointer;font-size:1.2rem;box-shadow:0 2px 8px rgba(15, 107, 102, .3)}@media (max-width:1024px){.admin-sidebar{transform:translateX(-100%);transition:transform .3s ease}.admin-sidebar.open{transform:translateX(0)}.admin-main{margin-left:0;padding:1.5rem;padding-top:4rem}.mobile-menu-toggle{display:block}.dashboard-grid{grid-template-columns:1fr}.system-grid{grid-template-columns:1fr}.dash-metrics{grid-template-columns:repeat(2,1fr)}.dash-metric:nth-child(2n){border-right:none}.dash-metric:nth-child(-n+2){border-bottom:1px solid var(--c-border,#d4d8db)}.dash-todo{grid-template-columns:1fr}}@media (max-width:640px){.admin-main{padding:1rem;padding-top:4rem}.page-title{font-size:1.25rem}.dash-metrics{grid-template-columns:1fr}.dash-metric{border-right:none;border-bottom:1px solid var(--c-border,#d4d8db)}.dash-metric:last-child{border-bottom:none}.dash-metric-value{font-size:1.4rem}.dash-panel-head{flex-wrap:wrap}.filter-bar{flex-direction:column}.filter-bar button{width:100%}.review-item-actions{flex-direction:column}.review-item-actions .btn{width:100%;text-align:center}.search-input-inline{min-width:100%}.modal-content{padding:1.25rem;margin:.5rem}.modal-large{max-width:100%}.action-cell{flex-direction:column}.action-cell .btn-sm{width:100%;text-align:center}}.badge-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:2rem}.badge-stat-card{background:#fff;padding:1.25rem;border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.04);text-align:center;transition:transform .2s,box-shadow .2s}.badge-stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.08)}.badge-stat-icon{font-size:1.8rem;margin-bottom:.4rem}.badge-stat-label{font-size:.82rem;color:#6b7280;font-weight:600;margin-bottom:.15rem}.badge-stat-count{font-size:1.6rem;font-weight:800;color:#16191d}.badge-stat-type{font-size:.72rem;color:#9ca3af;margin-top:.15rem}.badge-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:.75rem}.badge-tabs{display:flex;gap:.5rem}.badge-actions{display:flex;gap:.5rem;align-items:center}.badge-selector{display:flex;flex-wrap:wrap;gap:.4rem}.badge-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .65rem;border-radius:8px;font-size:.78rem;font-weight:600;cursor:pointer;border:2px solid #e5e7eb;background:#f9fafb;color:#6b7280;transition:all .2s;user-select:none;white-space:nowrap}.badge-chip:hover{border-color:#9bc9c5;background:#e6f3f2}.badge-chip.active{color:#fff;border-color:transparent}.badge-card{background:#fff;border-radius:14px;padding:1.25rem;box-shadow:0 1px 3px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.04);transition:box-shadow .2s}.badge-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.08),0 8px 20px rgba(0,0,0,.06)}.badge-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.badge-card-title{font-size:1.05rem;font-weight:700;color:#16191d}.badge-card-meta{font-size:.8rem;color:#9ca3af;margin-top:.2rem}.badge-card-stats{font-size:.82rem;color:#6b7280;margin-bottom:.75rem}.badge-card-actions{display:flex;gap:.5rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #f3f4f6}.badge-card-saving{font-size:.78rem;color:#9ca3af;font-style:italic}.badge-current{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.5rem;min-height:1.5rem}.badge-current-label{font-size:.78rem;color:#9ca3af;margin-right:.3rem;line-height:1.6}.badge-edit-panel{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed #e5e7eb}.badge-edit-panel-title{font-size:.8rem;color:#6b7280;margin-bottom:.5rem;font-weight:600}@media (max-width:640px){.badge-stats-grid{grid-template-columns:repeat(2,1fr)}.badge-toolbar{flex-direction:column;align-items:stretch}.badge-actions{flex-direction:column}.badge-actions .search-input-inline{min-width:100%}}