@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700;900&display=swap";
:root{--bg-app:#f8fafc;--bg-surface:#fff;--bg-surface-elevated:#f1f5f9;--bg-surface-hover:#e2e8f0;--bg-card:#fff;--bg-input:#fff;--border-subtle:#e2e8f0;--border-medium:#cbd5e1;--border-focus:#2563eb;--text-primary:#0f172a;--text-secondary:#334155;--text-muted:#64748b;--text-inverse:#fff;--accent-primary:#2563eb;--accent-primary-hover:#1d4ed8;--accent-primary-light:#eff6ff;--accent-primary-border:#bfdbfe;--accent-emerald:#059669;--accent-emerald-light:#ecfdf5;--accent-emerald-border:#a7f3d0;--accent-amber:#d97706;--accent-amber-light:#fffbeb;--accent-amber-border:#fde68a;--accent-rose:#dc2626;--accent-rose-light:#fef2f2;--accent-rose-border:#fecaca;--color-online:#059669;--color-danger:#dc2626;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", monospace;--font-chinese:"Noto Sans SC", sans-serif;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-pill:9999px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-card:0 1px 3px 0 #00000014, 0 1px 2px -1px #00000014;--shadow-elevated:0 10px 25px -3px #0000001a, 0 4px 6px -4px #00000014;--transition-fast:all .15s ease}[data-theme=dark]{--bg-app:#0b0f19;--bg-surface:#111827;--bg-surface-elevated:#1e293b;--bg-surface-hover:#334155;--bg-card:#111827;--bg-input:#0b0f19;--border-subtle:#1e293b;--border-medium:#334155;--border-focus:#3b82f6;--text-primary:#f8fafc;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--text-inverse:#0f172a;--accent-primary:#3b82f6;--accent-primary-hover:#2563eb;--accent-primary-light:#3b82f626;--accent-primary-border:#3b82f64d;--accent-emerald:#10b981;--accent-emerald-light:#10b98126;--accent-emerald-border:#10b9814d;--accent-amber:#f59e0b;--accent-amber-light:#f59e0b26;--accent-amber-border:#f59e0b4d;--accent-rose:#ef4444;--accent-rose-light:#ef444426;--accent-rose-border:#ef44444d;--color-online:#10b981;--color-danger:#ef4444;--shadow-sm:0 1px 2px 0 #00000080;--shadow-card:0 1px 3px 0 #0006, 0 0 0 1px #1e293b;--shadow-elevated:0 12px 30px -4px #000000b3, 0 0 0 1px #334155}*{box-sizing:border-box;margin:0;padding:0}html,body{background-color:var(--bg-app);min-height:100vh;color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;overflow-x:hidden}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:var(--bg-surface-elevated)}::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.admin-app-layout{width:100%;min-height:100vh;display:flex}.admin-sidebar{background:var(--bg-surface);border-right:1px solid var(--border-subtle);z-index:100;-webkit-user-select:none;user-select:none;flex-direction:column;width:260px;min-width:260px;height:100vh;transition:width .2s,min-width .2s;display:flex;position:sticky;top:0}.admin-sidebar.collapsed{width:74px;min-width:74px}.sidebar-header{border-bottom:1px solid var(--border-subtle);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;height:70px;padding:0 16px;display:flex}.sidebar-brand{align-items:center;gap:12px;text-decoration:none;display:flex;overflow:hidden}.sidebar-logo-img{border-radius:var(--radius-md);object-fit:cover;border:1px solid var(--border-subtle);flex-shrink:0;width:38px;height:38px}.sidebar-brand-text{white-space:nowrap;flex-direction:column;display:flex}.sidebar-brand-text h1{letter-spacing:-.02em;color:var(--text-primary);font-size:1.05rem;font-weight:800;line-height:1.2}.sidebar-brand-text span{color:var(--accent-primary);letter-spacing:.08em;text-transform:uppercase;font-size:.68rem;font-weight:700}.sidebar-toggle-btn{border-radius:var(--radius-sm);background:var(--bg-surface-elevated);border:1px solid var(--border-subtle);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-toggle-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.sidebar-nav-container{flex-direction:column;flex:1;gap:16px;padding:16px 10px;display:flex;overflow:hidden auto}.sidebar-section{flex-direction:column;gap:4px;display:flex}.sidebar-section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;padding:4px 12px;font-size:.68rem;font-weight:800}.admin-sidebar.collapsed .sidebar-section-title{display:none}.sidebar-divider{background:var(--border-subtle);height:1px;margin:4px 6px}.sidebar-nav-btn{border-radius:var(--radius-md);color:var(--text-secondary);font-family:var(--font-sans);cursor:pointer;transition:var(--transition-fast);text-align:left;white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:12px;width:100%;padding:10px 14px;font-size:.88rem;font-weight:600;display:flex;position:relative}.admin-sidebar.collapsed .sidebar-nav-btn{justify-content:center;padding:12px 0}.sidebar-nav-btn:hover{color:var(--text-primary);background:var(--bg-surface-elevated)}.sidebar-nav-btn.active{background:var(--accent-primary-light);color:var(--accent-primary);border-color:var(--accent-primary-border);font-weight:700}.sidebar-icon{color:var(--text-secondary);transition:var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-nav-btn:hover .sidebar-icon{color:var(--text-primary)}.sidebar-nav-btn.active .sidebar-icon{color:var(--accent-primary)}.sidebar-label{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.admin-sidebar.collapsed .sidebar-label{display:none}.sidebar-badge{font-size:.72rem;font-weight:700;font-family:var(--font-mono);border-radius:var(--radius-pill);background:var(--bg-surface-elevated);color:var(--text-secondary);border:1px solid var(--border-subtle);margin-left:auto;padding:2px 7px}.sidebar-nav-btn.active .sidebar-badge{background:var(--bg-surface);color:var(--accent-primary);border-color:var(--accent-primary-border)}.admin-sidebar.collapsed .sidebar-badge{display:none}.sidebar-footer{border-top:1px solid var(--border-subtle);background:var(--bg-surface);flex-shrink:0;padding:12px 10px}.sidebar-system-card{background:var(--bg-surface-elevated);border:1px solid var(--border-subtle);border-radius:var(--radius-md);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.admin-sidebar.collapsed .sidebar-system-card{justify-content:center;padding:8px 4px}.system-status-info{color:var(--text-primary);white-space:nowrap;align-items:center;gap:8px;font-size:.78rem;font-weight:700;display:flex}.admin-sidebar.collapsed .system-status-info span{display:none}.admin-main-wrapper{flex-direction:column;flex:1;min-width:0;display:flex;overflow-x:hidden}.admin-topbar{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);z-index:90;flex-shrink:0;justify-content:space-between;align-items:center;gap:20px;height:70px;padding:0 28px;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:16px;display:flex}.topbar-breadcrumb{color:var(--text-muted);align-items:center;gap:8px;font-size:.88rem;font-weight:600;display:flex}.topbar-breadcrumb .active-tab-name{color:var(--accent-primary);background:var(--accent-primary-light);border-radius:var(--radius-pill);border:1px solid var(--accent-primary-border);align-items:center;gap:6px;padding:4px 12px;font-weight:700;display:flex}.topbar-right{align-items:center;gap:10px;display:flex}.admin-content-view{flex:1;width:100%;max-width:1540px;margin:0 auto;padding:28px 32px 64px}.status-pill-badge{border-radius:var(--radius-pill);background:var(--bg-surface-elevated);border:1px solid var(--border-subtle);color:var(--text-primary);align-items:center;gap:8px;padding:6px 14px;font-size:.8rem;font-weight:700;display:inline-flex}.solid-dot{background:var(--color-online);border-radius:50%;width:8px;height:8px}.solid-dot.offline{background:var(--color-danger)}.bento-stats-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-bottom:24px;display:grid}.kpi-card-clean{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:var(--transition-fast);flex-direction:column;padding:22px;display:flex}.kpi-card-clean:hover{border-color:var(--border-medium);box-shadow:var(--shadow-elevated);transform:translateY(-2px)}.kpi-card-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.kpi-icon-box{border-radius:var(--radius-md);background:var(--accent-primary-light);width:44px;height:44px;color:var(--accent-primary);border:1px solid var(--accent-primary-border);justify-content:center;align-items:center;display:flex}.kpi-icon-box.emerald{background:var(--accent-emerald-light);color:var(--accent-emerald);border-color:var(--accent-emerald-border)}.kpi-icon-box.amber{background:var(--accent-amber-light);color:var(--accent-amber);border-color:var(--accent-amber-border)}.kpi-icon-box.slate{background:var(--bg-surface-elevated);color:var(--text-primary);border-color:var(--border-subtle)}.kpi-stat-number{color:var(--text-primary);letter-spacing:-.02em;font-size:2.3rem;font-weight:800;line-height:1.1}.kpi-stat-label{color:var(--text-secondary);margin-top:4px;font-size:.86rem;font-weight:600}.kpi-stat-subtext{color:var(--text-muted);align-items:center;gap:6px;margin-top:10px;font-size:.78rem;font-weight:500;display:flex}.bento-section-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-card);margin-bottom:24px;padding:26px}.section-head-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.section-title-group h2{color:var(--text-primary);letter-spacing:-.01em;align-items:center;gap:10px;font-size:1.35rem;font-weight:800;display:flex}.section-title-group p{color:var(--text-secondary);margin-top:4px;font-size:.86rem}.app-btn{border-radius:var(--radius-md);font-family:var(--font-sans);cursor:pointer;transition:var(--transition-fast);white-space:nowrap;border:1px solid #0000;align-items:center;gap:8px;padding:9px 18px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-flex}.app-btn-primary{background:var(--accent-primary);color:#fff}.app-btn-primary:hover{background:var(--accent-primary-hover)}.app-btn-secondary{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-medium)}.app-btn-secondary:hover{background:var(--bg-surface-elevated)}.app-btn-amber{background:var(--accent-amber);color:#fff}.app-btn-amber:hover{background:#b45309}.app-btn-danger{background:var(--accent-rose-light);color:var(--accent-rose);border:1px solid var(--accent-rose-border)}.app-btn-danger:hover{background:var(--accent-rose);color:#fff}.app-pill-badge{border-radius:var(--radius-pill);background:var(--bg-surface-elevated);color:var(--text-secondary);border:1px solid var(--border-subtle);align-items:center;gap:4px;padding:3px 10px;font-size:.75rem;font-weight:700;display:inline-flex}.hsk-gradient-bar{border-radius:var(--radius-pill);background:var(--bg-surface-elevated);gap:2px;height:12px;margin-top:16px;display:flex;overflow:hidden}.hsk-bar-segment{height:100%;transition:width .3s}.hsk-level-bento-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:20px;display:grid}.hsk-level-box{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);text-align:center;cursor:pointer;transition:var(--transition-fast);padding:16px}.hsk-level-box:hover{border-color:var(--accent-primary);background:var(--bg-surface-elevated);transform:translateY(-2px)}.hsk-level-box .level-tag{text-transform:uppercase;font-size:.78rem;font-weight:700}.hsk-level-box .word-count{color:var(--text-primary);font-size:1.45rem;font-weight:800;font-family:var(--font-mono);margin-top:4px}.table-responsive-box{border-radius:var(--radius-lg);border:1px solid var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-sm);overflow-x:auto}.app-table{border-collapse:collapse;text-align:left;width:100%}.app-table th{background:var(--bg-surface-elevated);text-transform:uppercase;color:var(--text-muted);letter-spacing:.05em;border-bottom:1px solid var(--border-subtle);white-space:nowrap;padding:14px 18px;font-size:.78rem;font-weight:700}.app-table td{border-bottom:1px solid var(--border-subtle);color:var(--text-primary);vertical-align:middle;padding:15px 18px;font-size:.92rem}.app-table tr:hover td{background:var(--bg-surface-elevated)}.hanzi-display{font-family:var(--font-chinese);color:var(--text-primary);font-size:1.45rem;font-weight:700}.pinyin-display{font-family:var(--font-sans);color:var(--accent-primary);font-size:.92rem;font-weight:600}.bangla-display{color:var(--accent-emerald);font-weight:700}.app-search-input-wrap{flex:1;min-width:280px;position:relative}.app-search-input-wrap svg{color:var(--text-muted);position:absolute;top:50%;left:14px;transform:translateY(-50%)}.app-pill-input{background:var(--bg-input);border:1px solid var(--border-medium);border-radius:var(--radius-pill);width:100%;color:var(--text-primary);font-family:var(--font-sans);transition:var(--transition-fast);outline:none;padding:10px 18px 10px 42px;font-size:.9rem}.app-pill-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-light)}.app-form-label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.04em;margin-bottom:6px;font-size:.78rem;font-weight:700;display:block}.app-form-input{background:var(--bg-input);border:1px solid var(--border-medium);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-family:var(--font-sans);transition:var(--transition-fast);outline:none;padding:10px 14px;font-size:.92rem}.app-form-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-light)}.app-modal-backdrop{z-index:200;background:#0f172aa6;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.app-modal-box{background:var(--bg-surface);border:1px solid var(--border-medium);border-radius:var(--radius-lg);width:100%;max-width:620px;box-shadow:var(--shadow-elevated);padding:28px;position:relative}.modal-close-btn{background:var(--bg-surface-elevated);border:1px solid var(--border-subtle);color:var(--text-muted);cursor:pointer;width:32px;height:32px;transition:var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:18px;right:18px}.modal-close-btn:hover{color:var(--text-primary);background:var(--bg-surface-hover)}.pagination-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:16px 4px 6px;display:flex}.pagination-controls{align-items:center;gap:6px;display:flex}.page-btn{border-radius:var(--radius-md);border:1px solid var(--border-medium);background:var(--bg-surface);min-width:36px;height:36px;color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;transition:var(--transition-fast);justify-content:center;align-items:center;padding:0 10px;font-size:.85rem;font-weight:700;display:flex}.page-btn:hover:not(:disabled){border-color:var(--accent-primary);background:var(--bg-surface-elevated)}.page-btn.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.page-btn:disabled{opacity:.4;cursor:not-allowed}.data-file-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin-top:18px;display:grid}.data-file-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);transition:var(--transition-fast);flex-direction:column;justify-content:space-between;padding:22px;display:flex}.data-file-card:hover{border-color:var(--border-medium);box-shadow:var(--shadow-elevated);transform:translateY(-2px)}.app-toast-alert{background:var(--bg-surface);border:1px solid var(--border-medium);box-shadow:var(--shadow-elevated);color:var(--text-primary);border-radius:var(--radius-md);z-index:1000;align-items:center;gap:12px;padding:14px 20px;font-size:.88rem;font-weight:600;display:flex;position:fixed;bottom:24px;right:24px}.spin-anim{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
