*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--font-base: 16px;--primary: #4f6ef7;--primary-hover: #3b5de7;--bg: #f5f7fa;--panel-bg: #ffffff;--border: #e2e8f0;--text: #1e293b;--text-secondary: #64748b;--danger: #ef4444;--radius: 10px;--shadow: 0 2px 12px rgba(0, 0, 0, .06);--side-w: 400px}body{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:var(--font-base);background:var(--bg);color:var(--text);line-height:1.6}.app{height:100vh;overflow:hidden}.page-layout{display:flex;height:100vh;overflow:hidden}.page-content{display:flex;flex-direction:column;flex:1;overflow:hidden}.page-header{background:linear-gradient(135deg,#4f6ef7,#7c3aed);color:#fff;padding:14px 28px;flex-shrink:0}.page-header h1{font-size:1.25rem;font-weight:700;letter-spacing:1px}.nav-panel,.control-panel{width:var(--side-w);flex-shrink:0;background:var(--panel-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px 16px;overflow:hidden}.panel{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.nav-header{display:flex;flex-direction:column;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--border);flex-shrink:0}.nav-header-flex{flex:0 0 auto}.nav-header-card{position:relative;margin-bottom:14px;z-index:10;border-top:1px solid var(--border);padding-top:4px}.nav-panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 14px 0;border-radius:10px;background:transparent;color:var(--text)}.nav-panel-title{font-size:1.75rem;font-weight:600;line-height:1.4;letter-spacing:-.1px;color:var(--text)}.nav-panel-subtitle{font-size:.8rem;font-weight:500;color:var(--text-secondary);letter-spacing:.5px;text-transform:uppercase;margin-top:2px}.nav-panel-links{display:flex;flex-direction:column;gap:4px;margin-top:12px;border-top:1px solid var(--border);padding-top:12px}.nav-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;font-size:1.5rem;font-weight:600;color:var(--text-secondary);text-decoration:none;transition:all .2s;cursor:pointer}.nav-link:hover{background:#f1f5f9;color:var(--text)}.nav-link.active{background:#4f6ef714;color:var(--primary);font-weight:700}.nav-link svg{flex-shrink:0}.nav-panel-summary{margin-top:auto;padding-top:18px;border-top:1px solid var(--border)}.nav-summary-title{font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);margin-bottom:10px}.nav-summary-item{display:flex;align-items:center;gap:8px;font-size:.875rem;color:var(--text-secondary);padding:4px 0}.nav-summary-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-blue{background:#4f6ef7}.dot-green{background:#10b981}.dot-purple{background:#7c3aed}.dot-orange{background:#f59e0b}.dot-teal{background:#14b8a6}.error-bar{background:#fef2f2;border-left:4px solid var(--danger);color:var(--danger);padding:10px 24px;display:flex;align-items:center;justify-content:space-between;font-size:1.125rem;flex-shrink:0}.error-bar button{background:none;border:1px solid var(--danger);color:var(--danger);padding:2px 12px;border-radius:4px;cursor:pointer}.page-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:16px;color:var(--text-secondary);font-size:1.125rem}.page-error-retry{display:inline-flex;align-items:center;gap:6px;padding:8px 20px;border:none;border-radius:48px;background:#0068f9;color:#fff;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .2s}.page-error-retry:hover{background:#024bb1}.panel-title{font-size:1.5rem;font-weight:700;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid var(--primary)}.panel-section{margin-bottom:22px}.panel-label{display:block;font-size:1.25rem;font-weight:600;color:var(--text-secondary);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.panel-label-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.toggle-all-btn{font-size:1rem;color:var(--primary);background:none;border:none;cursor:pointer;padding:0}.toggle-all-btn:hover{text-decoration:underline}.panel-select{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:1rem;background:#fff;color:var(--text);transition:border-color .2s}.panel-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4f6ef726}.category-filter-item{margin-top:8px}.category-filter-item:first-child{margin-top:0}.category-filter-label{display:block;font-size:1.125rem;font-weight:600;color:var(--text-secondary);margin-bottom:4px}.panel-hint{font-size:.875rem;color:var(--primary);margin-top:6px;font-style:italic}.range-warning{background:#fff7ed;border:1px solid #fed7aa;border-radius:6px;padding:8px 10px;margin-bottom:10px}.warning-text{font-size:.875rem;color:#c2410c;margin:0;line-height:1.5}.warning-text+.warning-text{margin-top:4px}.sample-list{max-height:260px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;padding:6px}.sample-checkbox{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:4px;cursor:pointer;font-size:1rem;transition:background .15s}.sample-checkbox:hover{background:#f1f5f9}.sample-checkbox input[type=checkbox]{accent-color:var(--primary);width:16px;height:16px}.hint{color:var(--text-secondary);font-size:.875rem;text-align:center;padding:16px 0}.panel-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:10px;border-top:1px solid var(--border)}.summary{display:flex;flex-direction:column;gap:2px;font-size:1rem;color:var(--text-secondary)}.summary strong{color:var(--text)}.refresh-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:5px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.refresh-btn:hover:not(:disabled){color:var(--primary);border-color:var(--primary);background:#1a73e80f}.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.refresh-icon{flex-shrink:0}.refresh-icon.spinning{animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.range-sliders{display:flex;flex-direction:column;gap:14px}.range-slider{padding:0}.range-slider-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.range-slider-label{font-size:1.125rem;font-weight:600;color:var(--text-secondary)}.range-slider-value{font-size:1.125rem;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums}.range-slider-track{position:relative;height:20px}.range-slider-track:before{content:"";position:absolute;top:50%;left:8px;right:8px;height:4px;background:var(--border);border-radius:2px;transform:translateY(-50%)}.range-slider-track-inner{position:relative;width:100%;height:100%;padding:0 8px}.range-slider-fill{position:absolute;top:50%;height:4px;background:var(--primary);border-radius:2px;transform:translateY(-50%);pointer-events:none}.range-slider-input{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;pointer-events:none;outline:none}.range-slider-input::-webkit-slider-runnable-track{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;height:4px}.range-slider-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;margin-top:-6px;background:#fff;border:2px solid var(--primary);border-radius:50%;cursor:pointer;pointer-events:auto;box-shadow:0 1px 4px #00000026;transition:transform .15s}.range-slider-input::-webkit-slider-thumb:hover{transform:scale(1.2)}.range-slider-input::-moz-range-track{background:transparent;border:none}.range-slider-input::-moz-range-thumb{width:16px;height:16px;background:#fff;border:2px solid var(--primary);border-radius:50%;cursor:pointer;pointer-events:auto;box-shadow:0 1px 4px #00000026}.range-slider-bounds{display:flex;justify-content:space-between;font-size:.875rem;color:#94a3b8;margin-top:2px;font-variant-numeric:tabular-nums}.chart-area{flex:1;padding:40px;position:relative;display:flex;flex-direction:column;background:#f8fafc;min-height:0}.chart-area>div:not(.platform-title-card):not(.auth-required):not(.loading){flex:1;min-height:0}.scatter-chart-wrapper{display:flex;align-items:center;justify-content:center;position:relative;flex:1;min-height:0;background:#fff;border:1px solid #efefef;border-radius:16px;box-shadow:#00000012 0 1px 1px,#0000000a 0 -1px 1px inset,#00000024 0 0 0 .5px inset}.scatter-chart-wrapper>div{position:absolute!important;top:20px!important;right:20px!important;bottom:20px!important;left:20px!important}.scatter-chart-wrapper .user-select-none,.scatter-chart-wrapper .js-plotly-plot,.scatter-chart-wrapper .plot-container,.scatter-chart-wrapper .svg-container,.scatter-chart-wrapper .main-svg{background:transparent!important;border:none!important;border-radius:0!important;box-shadow:none!important}.scatter-chart-wrapper>div,.scatter-chart-wrapper .js-plotly-plot{border-radius:inherit}.platform-title-card{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:16px clamp(14px,6vw,200px);gap:clamp(16px,2vw,50px);margin-bottom:40px;background:#fff;border:1px solid #efefef;border-radius:16px;box-shadow:#00000012 0 1px 1px,#0000000a 0 -1px 1px inset,#00000024 0 0 0 .5px inset}.platform-title-text{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:clamp(14px,1.8vw,36px);font-weight:700;color:#4338ca;line-height:1.3;margin:0;text-align:center}.platform-title-logo{display:flex;align-items:center;justify-content:center;flex-shrink:1;width:clamp(100px,12vw,200px);height:clamp(60px,8vw,120px)}.platform-title-logo svg{width:100%;height:100%}.platform-title-logo-image{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px}.admin-modal-logo{max-width:500px}.logo-modal-body{display:flex;flex-direction:column;gap:20px}.logo-preview-container{display:flex;justify-content:center;align-items:center;min-height:200px;background:#f8f9fa;border-radius:12px;padding:20px}.logo-preview{display:flex;justify-content:center;align-items:center}.logo-preview-image{max-width:100%;max-height:200px;object-fit:contain;border-radius:8px;box-shadow:0 2px 8px #0000001a}.logo-placeholder{display:flex;flex-direction:column;align-items:center;gap:12px;color:#94a3b8}.logo-placeholder svg{opacity:.5}.logo-upload-section{display:flex;flex-direction:column;gap:8px}.logo-upload-label{display:flex;justify-content:center}.logo-upload-label input[type=file]{display:none}.logo-upload-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;background:#0891b2;color:#fff;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s}.logo-upload-btn:hover{background:#0e7490}.logo-upload-hint{text-align:center;font-size:12px;color:#64748b}.logo-info{background:#f1f5f9;border-radius:8px;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.logo-info-item{display:flex;align-items:center;gap:8px;font-size:13px}.logo-info-label{color:#64748b;min-width:80px}.logo-info-value{color:#334155;font-weight:500;word-break:break-all}.admin-modal-btn-cyan{background:#0891b2}.admin-modal-btn-cyan:hover:not(:disabled){background:#0e7490}.admin-modal-cyan{background:linear-gradient(135deg,#0891b2,#06b6d4)}.admin-action-cyan{background:#ecfeff;color:#0891b2;border-color:#a5f3fc}.admin-action-cyan:hover:not(:disabled){background:#cffafe;border-color:#0891b2}.import-modal-body{display:flex;flex-direction:column;gap:16px}.import-info-row{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#f1f5f9;border-radius:8px;font-size:14px}.import-info-label{color:#64748b;flex-shrink:0}.import-info-value{font-weight:600;color:#334155;font-size:13px;background:#e2e8f0;padding:2px 8px;border-radius:4px}.import-dropzone{border:2px dashed #cbd5e1;border-radius:12px;padding:32px 24px;text-align:center;cursor:pointer;transition:all .2s;background:#fafbfc}.import-dropzone:hover{border-color:#16a34a;background:#f0fdf4}.import-dropzone.has-file{border-color:#16a34a;border-style:solid;background:#f0fdf4}.import-dropzone-placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;color:#94a3b8}.import-dropzone-placeholder svg{color:#cbd5e1}.import-dropzone:hover .import-dropzone-placeholder svg{color:#16a34a}.import-dropzone-placeholder span:first-of-type{font-size:14px;font-weight:500;color:#64748b}.import-dropzone-hint{font-size:12px;color:#94a3b8}.import-file-info{display:flex;align-items:center;justify-content:center;gap:10px}.import-file-name{font-weight:600;color:#16a34a;font-size:15px}.import-file-size{color:#64748b;font-size:13px}.import-mode-row{display:flex;align-items:center;gap:16px;padding:8px 0}.import-mode-label{font-size:14px;color:#475569;font-weight:500}.import-mode-option{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:14px;color:#334155}.import-mode-option input[type=radio]{accent-color:#16a34a}.import-warning{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;font-size:13px;color:#92400e;line-height:1.5}.import-warning svg{flex-shrink:0;margin-top:1px;color:#f59e0b}.import-progress{display:flex;align-items:center;justify-content:center;gap:12px;padding:24px;color:#16a34a;font-size:15px;font-weight:500}.import-result{display:flex;align-items:flex-start;gap:12px;padding:14px;border-radius:8px;font-size:14px;line-height:1.6}.import-result-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.import-result-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.import-result svg{flex-shrink:0;margin-top:2px}.import-result-msg{font-weight:600;margin:0 0 4px}.import-result-details{margin:0;font-size:13px;opacity:.85}.home-page{flex:1;overflow-y:auto;padding:clamp(12px,2vw,24px);display:flex;flex-direction:column;gap:clamp(12px,2vw,24px);border-top:1px solid #e2e8f0}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:clamp(10px,1.5vw,20px)}.stat-card{background:var(--panel-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(18px,2vw,30px) clamp(18px,2.2vw,28px);min-height:clamp(92px,8vw,128px);display:flex;align-items:center;gap:clamp(12px,1.4vw,20px);transition:transform .2s,box-shadow .2s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000014}.stat-card-icon{width:clamp(36px,4vw,60px);height:clamp(36px,4vw,60px);border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon-blue{background:#4f6ef71a;color:#4f6ef7}.stat-icon-green{background:#10b9811a;color:#10b981}.stat-icon-purple{background:#7c3aed1a;color:#7c3aed}.stat-icon-orange{background:#f59e0b1a;color:#f59e0b}.stat-icon-teal{background:#14b8a61a;color:#14b8a6}.stat-card-info{display:flex;flex-direction:column}.stat-card-value{font-size:clamp(1.1rem,1.6vw,1.625rem);font-weight:800;line-height:1.1;font-size:1.75rem;color:var(--text)}.stat-card-label{font-size:1.75rem;color:var(--text-secondary);margin-top:2px;font-weight:500}.pie-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:clamp(10px,1.5vw,20px);flex:1;min-height:260px}.pie-chart-card{background:var(--panel-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(10px,1.2vw,16px);min-height:clamp(300px,30vw,420px)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-secondary)}.spinner{width:40px;height:40px;border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:12px}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 768px){.nav-panel,.control-panel{width:56px;padding:12px 8px}.nav-panel-title,.nav-panel-subtitle,.nav-link span,.dataset-switcher-btn,.dataset-dropdown,.nav-panel-summary{display:none}.nav-panel-header{justify-content:center;padding:10px}.nav-panel-links{align-items:center}.stat-cards,.pie-charts{grid-template-columns:1fr}.page-layout{flex-direction:row}.chart-area{min-height:400px;padding:12px}.platform-title-card{padding:12px 16px;gap:12px;margin-bottom:10px;border-radius:10px}.platform-title-text{font-size:18px}}.auth-module{padding-top:8px}.auth-divider{height:1px;background:var(--border);margin:12px 0}.auth-form-title{margin:0 0 10px;font-size:1.25rem;font-weight:600;color:#1e293b}.auth-tabs{display:flex;gap:4px;margin-bottom:10px;background:#f1f5f9;border-radius:8px;padding:3px}.auth-tab{flex:1;padding:6px 0;font-size:1.125rem;font-weight:600;border:none;border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s}.auth-tab:hover{color:var(--text)}.auth-tab.active{background:#fff;color:var(--primary);box-shadow:0 1px 3px #00000014}.auth-msg{font-size:1.125rem;padding:6px 10px;border-radius:6px;margin-bottom:8px;line-height:1.4}.auth-msg-error{background:#fef2f2;color:var(--danger);border:1px solid #fecaca}.auth-msg-success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.auth-form{display:flex;flex-direction:column;gap:8px}.auth-input-wrap{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:0 10px;transition:border-color .2s}.auth-input-wrap:focus-within{border-color:var(--primary);background:#fff}.auth-input-icon{display:flex;color:var(--text-secondary);flex-shrink:0}.auth-input{flex:1;border:none;background:transparent;padding:8px 0;font-size:1.125rem;color:var(--text);outline:none;min-width:0}.auth-input::placeholder{color:#94a3b8}.auth-pwd-toggle{display:flex;align-items:center;padding:4px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:4px;transition:color .2s;flex-shrink:0}.auth-pwd-toggle:hover{color:var(--primary)}.auth-submit-btn{width:100%;padding:8px 0;font-size:1.125rem;font-weight:600;color:#fff;background:var(--primary);border:none;border-radius:8px;cursor:pointer;transition:background .2s;margin-top:2px}.auth-submit-btn:hover{background:var(--primary-hover)}.auth-submit-btn:disabled{opacity:.6;cursor:not-allowed}.auth-back-btn{width:100%;padding:6px 0;font-size:1.125rem;font-weight:500;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;transition:color .2s}.auth-back-btn:hover{color:var(--primary)}.auth-user-card{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#f8fafc;border:1px solid var(--border);border-radius:10px}.auth-user-avatar{display:flex;align-items:center;justify-content:center;width:45px;height:45px;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;flex-shrink:0}.auth-user-info{display:flex;flex-direction:column;flex:1;min-width:0}.auth-user-name{font-size:1.25rem;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-status-badge{display:flex;align-items:center;gap:4px;font-size:1.125rem;font-weight:500;color:#16a34a}.auth-status-dot{width:6px;height:6px;border-radius:50%;background:#16a34a}.auth-logout-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:6px;transition:all .2s;flex-shrink:0}.auth-logout-btn:hover{background:#fef2f2;color:var(--danger)}.auth-link-btn{width:100%;padding:6px 0;margin-top:6px;font-size:1.125rem;font-weight:500;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;text-align:center;transition:color .2s}.auth-link-btn:hover{color:var(--primary)}.auth-forgot-link{padding:4px 0;margin-top:8px;font-size:.8rem;font-weight:400;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;text-align:left;transition:color .2s}.auth-forgot-link:hover{color:var(--primary)}.auth-required{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:300px;gap:12px;color:var(--text-secondary);text-align:center;padding:40px 24px}.auth-required svg{color:#94a3b8;opacity:.7}.auth-required h3{font-size:1.25rem;font-weight:700;color:var(--text);margin:0}.auth-required p{font-size:1.125rem;color:var(--text-secondary);margin:0;max-width:320px;line-height:1.6}.panel-auth-required{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 16px;color:var(--text-secondary);text-align:center;flex:1}.panel-auth-required svg{color:#94a3b8;opacity:.6}.panel-auth-text{font-size:1.125rem;font-weight:600;color:var(--text);margin:0}.panel-auth-hint{font-size:.875rem;color:var(--text-secondary);margin:0;line-height:1.5}.auth-admin-badge{display:inline-block;margin-top:4px;padding:2px 8px;font-size:.875rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#fff;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:4px}.auth-link-row{display:flex;gap:4px}.auth-link-btn-admin{color:var(--primary);font-weight:600}.auth-info-box{background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;padding:8px 10px;margin-bottom:10px}.auth-info-box p{font-size:.875rem;color:#1e40af;margin:0;line-height:1.5}.admin-panel{max-height:340px;display:flex;flex-direction:column}.admin-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.admin-panel-title{display:flex;align-items:center;gap:6px;font-size:1.125rem;font-weight:700;color:var(--text);margin:0}.admin-back-btn{display:flex;align-items:center;gap:2px;font-size:.875rem;font-weight:500;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .2s}.admin-back-btn:hover{background:#f1f5f9;color:var(--primary)}.admin-loading{font-size:.875rem;color:var(--text-secondary);text-align:center;padding:20px 0}.admin-user-count{font-size:.875rem;color:var(--text-secondary);margin-bottom:6px;font-weight:500}.admin-user-list{flex:1;overflow-y:auto;max-height:240px}.admin-user-item{padding:8px 0;border-bottom:1px solid #f1f5f9}.admin-user-item:last-child{border-bottom:none}.admin-user-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.admin-user-name{font-size:1.125rem;font-weight:600;color:var(--text)}.admin-user-badges{display:flex;gap:4px}.admin-badge{padding:1px 6px;font-size:.875rem;font-weight:600;border-radius:3px;letter-spacing:.3px}.admin-badge-active{background:#dcfce7;color:#166534}.admin-badge-pending{background:#fef9c3;color:#854d0e}.admin-badge-disabled{background:#fee2e2;color:#991b1b}.admin-badge-admin{background:#ede9fe;color:#5b21b6}.admin-badge-user{background:#f1f5f9;color:#475569}.admin-user-actions{display:flex;flex-wrap:wrap;gap:4px}.admin-action-btn{display:flex;align-items:center;gap:3px;padding:3px 8px;font-size:.875rem;font-weight:500;border:1px solid #e2e8f0;border-radius:4px;background:#fff;cursor:pointer;transition:all .15s}.admin-action-btn:hover{border-color:transparent}.admin-action-activate{color:#16a34a}.admin-action-activate:hover{background:#dcfce7;border-color:#bbf7d0}.admin-action-disable{color:#dc2626}.admin-action-disable:hover{background:#fee2e2;border-color:#fecaca}.admin-action-setadmin{color:#7c3aed}.admin-action-setadmin:hover{background:#ede9fe;border-color:#ddd6fe}.admin-action-delete{color:#64748b}.admin-action-delete:hover{background:#fef2f2;border-color:#fecaca;color:#dc2626}.dataset-switcher-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--border);border-radius:8px;background:var(--panel-bg);color:var(--text-secondary);cursor:pointer;transition:all .25s ease;padding:0;flex-shrink:0}.dataset-switcher-btn:hover,.dataset-switcher-btn.open{background:#f1f5f9;color:var(--text);border-color:#cbd5e1}.dataset-switcher-btn.open svg{transform:rotate(180deg)}.dataset-switcher-btn svg{transition:transform .2s}.dataset-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px #00000024;overflow:hidden;animation:dropdownFadeIn .15s ease;z-index:20}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dataset-dropdown-item{display:block;width:100%;padding:10px 14px;border:none;background:none;text-align:left;font-size:1rem;color:#334155;cursor:pointer;transition:background .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dataset-dropdown-item:hover{background:#f1f5f9}.dataset-dropdown-item.active{background:#eff6ff;color:#2563eb;font-weight:600}.nav-link-admin{color:#7c3aed}.nav-link-admin:hover{background:#7c3aed14}.nav-link-admin.active{background:#7c3aed1a;color:#7c3aed}.admin-sidebar{display:flex;flex-direction:column;height:100%}.admin-sidebar-header{display:flex;align-items:center;gap:10px;padding:16px 14px;margin-bottom:16px;border-radius:var(--radius);background:linear-gradient(135deg,#7c3aed,#5b21b6);color:#fff}.admin-sidebar-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:#ffffff26;flex-shrink:0}.admin-sidebar-logo-row{display:flex;align-items:center;justify-content:center;padding:16px 14px;margin-bottom:16px}.admin-sidebar-logo-img,.nav-header-logo-img{max-width:100%;max-height:48px;height:auto;object-fit:contain;display:block}.nav-header-logo-row{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:12px 14px}.nav-header-logo-clickable{cursor:pointer}.nav-header-logo-img{width:48px;height:48px;object-fit:contain;display:block;flex-shrink:0}.nav-header-logo-text{font-size:1.75rem;font-weight:700;color:var(--text);line-height:1.3;letter-spacing:.3px}.admin-sidebar-text{display:flex;flex-direction:column;min-width:0}.admin-sidebar-title{font-size:1.125rem;font-weight:700;letter-spacing:.3px}.admin-sidebar-subtitle{font-size:.875rem;font-weight:500;opacity:.72;text-transform:uppercase;letter-spacing:.5px}.admin-sidebar-nav{display:flex;flex-direction:column;gap:4px}.admin-sidebar-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;font-size:1.125rem;font-weight:600;color:var(--text-secondary);text-decoration:none;transition:all .2s;cursor:pointer}.admin-sidebar-link:hover{background:#f1f5f9;color:var(--text)}.admin-sidebar-link.active{background:#7c3aed14;color:#7c3aed;font-weight:700}.admin-sidebar-link svg{flex-shrink:0}.admin-page-header{display:flex;align-items:center;justify-content:space-between;padding:20px 28px;background:#fff;border-bottom:1px solid var(--border);flex-shrink:0}.admin-page-header-left{display:flex;flex-direction:column;gap:2px}.admin-page-title{display:flex;align-items:center;gap:10px;font-size:1.25rem;font-weight:700;color:var(--text);margin:0}.admin-page-subtitle{font-size:.875rem;color:var(--text-secondary)}.admin-refresh-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:#fff;color:var(--text-secondary);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .2s;flex-shrink:0}.admin-refresh-btn:hover:not(:disabled){color:#7c3aed;border-color:#7c3aed;background:#7c3aed0a}.admin-refresh-btn:disabled{opacity:.6;cursor:not-allowed}.admin-refresh-btn svg.spinning{animation:spin .8s linear infinite}.admin-page-back-link{color:#7c3aed;font-size:.875rem;font-weight:500;text-decoration:none;margin-top:8px}.admin-page-back-link:hover{text-decoration:underline}.admin-stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;padding:20px 28px;flex-shrink:0}.admin-stat-card{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:var(--radius);border:1px solid var(--border);transition:all .2s}.admin-stat-card:hover{box-shadow:0 4px 12px #0000000f;transform:translateY(-1px)}.admin-stat-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:10px;flex-shrink:0}.admin-stat-blue .admin-stat-icon{background:#4f6ef71a;color:#4f6ef7}.admin-stat-green .admin-stat-icon{background:#10b9811a;color:#10b981}.admin-stat-orange .admin-stat-icon{background:#f59e0b1a;color:#f59e0b}.admin-stat-red .admin-stat-icon{background:#ef44441a;color:#ef4444}.admin-stat-purple .admin-stat-icon{background:#7c3aed1a;color:#7c3aed}.admin-stat-info{display:flex;flex-direction:column}.admin-stat-value{font-size:1.625rem;font-weight:800;line-height:1.1;color:var(--text)}.admin-stat-label{font-size:.875rem;font-weight:500;color:var(--text-secondary);margin-top:2px}.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 28px 16px;flex-shrink:0;flex-wrap:wrap}.admin-toolbar-right{display:flex;align-items:center;gap:8px}.admin-search-box{display:flex;align-items:center;gap:8px;padding:0 12px;background:#fff;border:1px solid var(--border);border-radius:8px;transition:border-color .2s;min-width:200px}.admin-search-box:focus-within{border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed1a}.admin-search-box svg{color:var(--text-secondary);flex-shrink:0}.admin-search-input{flex:1;border:none;background:transparent;padding:9px 0;font-size:1.125rem;color:var(--text);outline:none}.admin-search-input::placeholder{color:#94a3b8}.admin-filter-tabs{display:flex;gap:4px;background:#f1f5f9;border-radius:8px;padding:3px}.admin-filter-tab{padding:6px 12px;font-size:.875rem;font-weight:600;border:none;border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s}.admin-filter-tab:hover{color:var(--text)}.admin-filter-tab.active{background:#fff;color:#7c3aed;box-shadow:0 1px 3px #00000014}.admin-table-container{flex:1;overflow-y:auto;padding:0 28px 28px}.admin-table{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:0 1px 3px #0000000f}.admin-table thead{background:#f8fafc;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1}.admin-table th{padding:12px 16px;font-size:1.125rem;font-weight:700;color:var(--text-secondary);text-align:left;text-transform:uppercase;letter-spacing:.5px}.admin-table td{padding:14px 16px;font-size:1.125rem;color:var(--text);border-bottom:1px solid #f1f5f9}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:#fafbfc}.admin-table-user{display:flex;align-items:center;gap:10px}.admin-table-avatar{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#e0e7ff,#c7d2fe);color:#4338ca;font-size:.875rem;font-weight:700;flex-shrink:0}.admin-table-username{font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}.admin-table-you{font-size:.875rem;color:#7c3aed;font-weight:500}.admin-table-date{color:var(--text-secondary);font-size:.875rem}.admin-table-index{color:var(--text-secondary);font-size:.875rem;font-weight:600;font-variant-numeric:tabular-nums;text-align:center}.admin-role-badge{display:inline-block;padding:3px 10px;font-size:.875rem;font-weight:600;border-radius:20px;letter-spacing:.3px}.admin-role-admin{background:#ede9fe;color:#5b21b6}.admin-role-user{background:#f1f5f9;color:#475569}.admin-status-badge{display:inline-block;padding:3px 10px;font-size:.875rem;font-weight:600;border-radius:20px;letter-spacing:.3px}.admin-status-active{background:#dcfce7;color:#166534}.admin-status-pending{background:#fef9c3;color:#854d0e}.admin-status-disabled{background:#fee2e2;color:#991b1b}.admin-table-actions{display:flex;flex-wrap:wrap;gap:6px}.admin-action-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;font-size:.875rem;font-weight:600;border:1px solid;border-radius:6px;background:#fff;cursor:pointer;transition:all .15s}.admin-action-btn:disabled{opacity:.6;cursor:not-allowed}.admin-action-btn svg.spinning{animation:spin .8s linear infinite}.admin-action-green{color:#16a34a;border-color:#bbf7d0}.admin-action-green:hover:not(:disabled){background:#dcfce7;border-color:#16a34a}.admin-action-orange{color:#d97706;border-color:#fed7aa}.admin-action-orange:hover:not(:disabled){background:#fff7ed;border-color:#d97706}.admin-action-purple{color:#7c3aed;border-color:#ddd6fe}.admin-action-purple:hover:not(:disabled){background:#ede9fe;border-color:#7c3aed}.admin-action-red{color:#dc2626;border-color:#fecaca}.admin-action-red:hover:not(:disabled){background:#fee2e2;border-color:#dc2626}.admin-action-blue{color:#2563eb;border-color:#bfdbfe}.admin-action-blue:hover:not(:disabled){background:#eff6ff;border-color:#2563eb}.admin-table-loading,.admin-table-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:12px;color:var(--text-secondary)}.admin-table-loading p,.admin-table-empty p{font-size:1.125rem;margin:0}.admin-table-empty svg{color:#cbd5e1;margin-bottom:4px}.admin-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;animation:modalFadeIn .15s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.admin-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0003;min-width:380px;max-width:480px;overflow:hidden;animation:modalSlideIn .2s ease}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.admin-modal-header{padding:18px 24px}.admin-modal-header h3{font-size:1.25rem;font-weight:700;margin:0}.admin-modal-green{background:#f0fdf4;color:#166534;border-bottom:2px solid #86efac}.admin-modal-blue{background:#eff6ff;color:#1e40af;border-bottom:2px solid #93c5fd}.admin-modal-orange{background:#fff7ed;color:#9a3412;border-bottom:2px solid #fdba74}.admin-modal-purple{background:#faf5ff;color:#581c87;border-bottom:2px solid #c4b5fd}.admin-modal-red{background:#fef2f2;color:#991b1b;border-bottom:2px solid #fca5a5}.admin-modal-body{padding:20px 24px}.admin-modal-body p{font-size:1.125rem;color:var(--text-secondary);margin:0 0 12px;line-height:1.6}.admin-modal-body p:last-child{margin-bottom:0}.admin-modal-username{background:#f8fafc;padding:10px 14px;border-radius:8px;font-size:.875rem}.admin-modal-username strong{color:var(--text)}.admin-modal-footer{display:flex;gap:10px;padding:16px 24px;border-top:1px solid var(--border);justify-content:flex-end}.admin-modal-btn{padding:9px 20px;font-size:1.125rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;transition:all .2s}.admin-modal-btn-cancel{background:#f1f5f9;color:var(--text-secondary)}.admin-modal-btn-cancel:hover{background:#e2e8f0;color:var(--text)}.admin-modal-btn-confirm{color:#fff}.admin-modal-btn-green{background:#16a34a}.admin-modal-btn-green:hover{background:#15803d}.admin-modal-btn-orange{background:#d97706}.admin-modal-btn-orange:hover{background:#b45309}.admin-modal-btn-purple{background:#7c3aed}.admin-modal-btn-purple:hover{background:#6d28d9}.admin-modal-btn-blue{background:#2563eb}.admin-modal-btn-blue:hover{background:#1d4ed8}.admin-modal-btn-red{background:#dc2626}.admin-modal-btn-red:hover{background:#b91c1c}.admin-toast{position:fixed;top:24px;right:24px;z-index:9999;display:flex;align-items:center;gap:10px;padding:12px 20px;border-radius:10px;font-size:.9rem;font-weight:500;box-shadow:0 6px 20px #00000014;animation:toastSlideIn .25s ease}@keyframes toastSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.admin-toast-success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.admin-toast-error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.admin-table-container::-webkit-scrollbar{width:6px}.admin-table-container::-webkit-scrollbar-track{background:transparent}.admin-table-container::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.admin-table-container::-webkit-scrollbar-thumb:hover{background:#94a3b8}.admin-el-pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 28px;flex-shrink:0;border-top:1px solid var(--border);background:#fff;font-size:1.125rem;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.admin-el-pagination__total{font-size:1.125rem;color:var(--text-secondary);font-weight:400}.admin-el-pagination__total b{font-weight:700;color:var(--text)}.admin-el-pagination__right{display:flex;align-items:center;gap:4px}.admin-el-pagination__btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;font-size:1.125rem;font-weight:600;color:var(--text-secondary);background:#fff;border:1px solid var(--border);border-radius:4px;cursor:pointer;transition:all .2s;line-height:1}.admin-el-pagination__btn:hover:not(.disabled){color:#7c3aed;border-color:#7c3aed}.admin-el-pagination__btn.disabled,.admin-el-pagination__btn:disabled{color:#c0c4cc;background:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.admin-el-pager{display:flex;align-items:center;gap:2px;list-style:none;margin:0;padding:0}.admin-el-pager__item{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 4px;font-size:1.125rem;font-weight:500;color:var(--text);background:transparent;border:none;border-radius:4px;cursor:pointer;transition:all .2s;line-height:1}.admin-el-pager__item:hover:not(.active):not(.admin-el-pager__ellipsis){color:#7c3aed}.admin-el-pager__item.active{color:#fff;background:#7c3aed;font-weight:700}.admin-el-pager__ellipsis{color:#c0c4cc;cursor:pointer;font-size:1.125rem;letter-spacing:1px;min-width:28px}.admin-el-pager__ellipsis:hover{color:#7c3aed}.admin-el-pagination__jump{display:none;font-size:.875rem;color:var(--text-secondary)}@media (max-width: 768px){.admin-stats-row{grid-template-columns:repeat(2,1fr)}.admin-toolbar{flex-direction:column;align-items:stretch}.admin-search-box{min-width:unset}.admin-table-container{padding:0 16px 16px}.admin-table{font-size:1.125rem}.admin-table th,.admin-table td{padding:10px 12px}.admin-el-pagination{flex-wrap:wrap;gap:8px;padding:10px 16px;justify-content:center}.admin-el-pagination__total{display:none}.admin-el-pagination__jump{display:block;width:100%;text-align:center;font-size:1.125rem;color:var(--text-secondary)}.admin-el-pager__item,.admin-el-pagination__btn{min-width:26px;height:26px;font-size:1.125rem}}.admin-upload-config-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;border:none;border-radius:8px;font-size:1.125rem;font-weight:600;cursor:pointer;transition:all .2s}.admin-upload-config-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #7c3aed4d}.admin-upload-config-btn:active{transform:translateY(0)}.admin-modal-upload{max-width:520px;width:100%}.admin-modal-upload .admin-modal-header h3{display:flex;align-items:center;gap:8px}.upload-drop-zone{border:2px dashed #d1d5db;border-radius:10px;padding:28px;text-align:center;cursor:pointer;transition:all .2s;background:#fafbfc;margin-bottom:16px}.upload-drop-zone:hover{border-color:#7c3aed;background:#f5f3ff}.upload-drop-zone.drag-over{border-color:#7c3aed;background:#ede9fe;box-shadow:0 0 0 4px #7c3aed14}.upload-drop-zone.has-file{border-style:solid;border-color:#e5e7eb;background:#fff;padding:14px 16px;cursor:default}.upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:6px;color:#6b7280}.upload-placeholder svg{color:#9ca3af;margin-bottom:4px}.upload-placeholder p{font-size:1.125rem;font-weight:600;color:#374151;margin:0}.upload-placeholder span{font-size:.875rem;color:#9ca3af}.upload-file-info{display:flex;align-items:center;gap:10px;color:#374151}.upload-file-info svg{flex-shrink:0;color:#7c3aed}.upload-file-name{flex:1;font-weight:600;font-size:1.125rem;text-align:left}.upload-file-remove{background:none;border:none;font-size:1.125rem;color:#9ca3af;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1}.upload-file-remove:hover{background:#f3f4f6;color:#dc2626}.upload-form-fields{display:flex;flex-direction:column;gap:12px}.upload-form-field label{display:block;font-size:1.125rem;font-weight:600;color:#374151;margin-bottom:4px}.upload-optional{font-weight:400;color:#9ca3af}.upload-form-field input{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:1.125rem;color:#374151;outline:none;transition:border-color .15s;box-sizing:border-box}.upload-form-field input:focus{border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed14}.upload-form-field input::placeholder{color:#c4c8cf}.admin-modal-btn-confirm:disabled{opacity:.5;cursor:not-allowed}.admin-modal-create{max-width:480px;width:100%}.create-form-fields{display:flex;flex-direction:column;gap:16px;margin-bottom:16px}.create-form-field{display:flex;flex-direction:column;gap:4px}.create-form-field label{font-size:1.125rem;font-weight:600;color:#374151}.create-form-field input{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:1.125rem;outline:none;transition:border-color .2s}.create-form-field input:focus{border-color:#7c3aed;box-shadow:0 0 0 2px #7c3aed26}.create-form-field input::placeholder{color:#9ca3af}.create-required{color:#dc2626;font-weight:700}.create-optional{color:#9ca3af;font-weight:400;font-size:.875rem}.create-label-tip{display:inline-block;margin-left:4px;color:#9ca3af;cursor:help;vertical-align:middle;transition:color .2s}.create-label-tip:hover{color:#4f46e5}.create-field-hint{font-size:.875rem;color:#9ca3af}.create-info-box{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;font-size:.875rem;color:#1e40af;line-height:1.5}.create-info-box svg{flex-shrink:0;margin-top:2px}.admin-dataset-id{font-family:SF Mono,Fira Code,monospace;font-size:.875rem;font-weight:600;color:#6d28d9;background:#f5f3ff;padding:2px 8px;border-radius:4px;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.admin-dataset-name{font-weight:500;color:#1f2937;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.admin-dataset-collection{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-size:.875rem;color:#6b7280;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.admin-source-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.813rem;font-weight:500;white-space:nowrap}.admin-source-external{background:#dbeafe;color:#1d4ed8}.create-source-tabs{display:flex;gap:0;border:1px solid #d1d5db;border-radius:6px;overflow:hidden;width:fit-content}.create-source-tab{padding:6px 16px;font-size:.875rem;font-weight:500;color:#6b7280;background:#fff;border:none;cursor:pointer;transition:all .15s}.create-source-tab:not(:last-child){border-right:1px solid #d1d5db}.create-source-tab:hover{background:#f3f4f6}.create-source-tab.active{background:#ede9fe;color:#6d28d9}.create-fetch-external-btn{width:100%;padding:10px 16px;font-size:.938rem;font-weight:500;color:#2563eb;background:#eff6ff;border:1px dashed #93c5fd;border-radius:6px;cursor:pointer;transition:all .15s}.create-fetch-external-btn:hover:not(:disabled){background:#dbeafe;border-color:#60a5fa}.create-fetch-external-btn:disabled{opacity:.6;cursor:not-allowed}.create-external-loading{display:flex;align-items:center;gap:8px;padding:10px 12px;color:#6b7280;font-size:.938rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px}.create-external-loading .spinner{width:16px;height:16px}.create-external-select{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:1.125rem;color:#374151;background:#fff;outline:none;cursor:pointer;transition:border-color .2s}.create-external-select:focus{border-color:#7c3aed;box-shadow:0 0 0 2px #7c3aed26}.create-form-fields textarea{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;resize:vertical;min-height:60px}.create-form-fields textarea:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px #6366f126}.admin-dataset-fields{display:flex;flex-wrap:wrap;gap:4px}.admin-dataset-tag{display:inline-block;padding:2px 8px;background:#ede9fe;color:#6d28d9;border-radius:12px;font-size:.875rem;font-weight:500}.admin-row-disabled{opacity:.5}.admin-empty-hint{font-size:1.125rem;color:#9ca3af}.admin-modal-json{width:720px;max-width:90vw}.admin-json-body{padding:0!important;max-height:60vh;overflow:auto}.admin-json-viewer{margin:0;padding:16px 20px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.875rem;line-height:1.6;color:#1e293b;background:#f8fafc;white-space:pre;min-height:200px}.admin-json-editor{width:100%;min-height:360px;padding:16px 20px;margin:0;border:none;outline:none;resize:vertical;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.875rem;line-height:1.6;color:#1e293b;background:#fff;box-sizing:border-box;-moz-tab-size:2;tab-size:2}.admin-json-editor:focus{box-shadow:inset 0 0 0 2px #7c3aed}.admin-json-error{padding:8px 20px;font-size:.875rem;color:#dc2626;background:#fef2f2;border-top:1px solid #fca5a5}.admin-modal-header h3{display:flex;align-items:center;gap:8px}@media (max-width: 768px){.admin-stats-row{grid-template-columns:repeat(3,1fr)}.admin-upload-config-btn span,.admin-refresh-btn span{display:none}}@media (min-width: 1920px){:root{--font-base: 18px}}@media (max-width: 1024px){:root{--font-base: 15px}}@media (max-width: 768px){:root{--font-base: 14px}}@media print{:root{--font-base: 20px}}.panel-lang-footer{padding-top:12px;margin-top:auto;border-top:1px solid var(--border, #e2e8f0)}.lang-switcher-btn{display:flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--border, #e2e8f0);border-radius:6px;background:transparent;color:var(--text-secondary, #64748b);font-size:1.125rem;line-height:1;cursor:pointer;transition:all .15s ease}.lang-switcher-btn:hover{border-color:var(--primary, #4f6ef7);color:var(--primary, #4f6ef7)}.lang-opt{padding:1px 4px;border-radius:3px;font-weight:500;line-height:1;transition:all .15s ease}.lang-opt.active{color:#fff;font-weight:700}.lang-divider{color:var(--border, #e2e8f0);-webkit-user-select:none;user-select:none}.admin-sidebar-lang-footer{margin-top:auto;padding-top:12px}.nav-lang-footer{margin-top:auto;padding-top:12px;border-top:1px solid var(--border, #e2e8f0)}.admin-dataset-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;padding:0 8px;border-radius:11px;font-size:.875rem;font-weight:600;background:#f1f5f9;color:#475569}.admin-dataset-badge.admin-dataset-all{background:#eff6ff;color:#1d4ed8;font-weight:700}.dataset-auth-list{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto;padding:4px 0}.dataset-auth-selectall{padding-bottom:8px;border-bottom:1px solid #e2e8f0;margin-bottom:4px}.dataset-auth-checkbox{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer;transition:background .15s}.dataset-auth-checkbox:hover{background:#f8fafc}.dataset-auth-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:#4f6ef7;flex-shrink:0}.dataset-auth-name{font-size:1rem;font-weight:500;color:#1e293b;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dataset-auth-id{font-size:.875rem;color:#94a3b8;font-family:monospace;flex-shrink:0}.landing-page{position:relative;height:100vh;overflow:hidden;background:linear-gradient(180deg,#0a0e27,#1a1f3a,#0d1117);color:#fff;display:flex;flex-direction:column;justify-content:center}.landing-page:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:60px 60px;pointer-events:none;z-index:0}.landing-nav{position:absolute;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:10px 40px;height:60px;box-sizing:border-box;background:#0a0e27cc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.landing-nav-brand{display:flex;align-items:center;gap:12px;font-size:1.125rem;font-weight:700;color:#fff;letter-spacing:.5px}.landing-nav-brand-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center}.landing-nav-actions{display:flex;align-items:center;gap:12px}.landing-nav-user{display:flex;align-items:center;gap:6px;font-size:1rem;font-weight:500;color:#fffc}.landing-nav-user-dropdown{position:relative}.landing-nav-user-trigger{display:flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border-radius:24px;border:1px solid rgba(255,255,255,.15);background:transparent;color:#ffffffd9;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.landing-nav-user-trigger:hover{background:#ffffff14;color:#fff;border-color:#ffffff4d}.landing-nav-user-avatar{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--text-secondary);color:#fff;font-size:.875rem;font-weight:700;flex-shrink:0;line-height:1}.landing-nav-user-arrow{transition:transform .2s}.landing-nav-user-arrow.open{transform:rotate(180deg)}.landing-nav-user-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:150px;background:#1e2030f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:6px;z-index:100;box-shadow:0 8px 24px #00000059;animation:landing-dropdown-in .15s ease-out}@keyframes landing-dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.landing-nav-user-menu-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-radius:6px;color:#fffc;font-size:.9rem;cursor:pointer;transition:all .15s}.landing-nav-user-menu-item:hover{background:#4f6ef714;color:var(--primary)}.landing-nav-user-menu-divider{height:1px;margin:4px 8px;background:#ffffff14}.landing-nav-btn{padding:8px 20px;border-radius:8px;font-size:1.125rem;font-weight:500;cursor:pointer;transition:all .2s;text-decoration:none;border:none}.landing-nav-btn-ghost{background:transparent;color:#fffc;border:1px solid rgba(255,255,255,.15)}.landing-nav-btn-ghost:hover{background:#ffffff14;color:#fff;border-color:#ffffff4d}.landing-nav-btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff}.landing-nav-btn-primary:hover{background:linear-gradient(135deg,#4f46e5,#7c3aed);transform:translateY(-1px);box-shadow:0 4px 12px #6366f166}.landing-hero{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:72px 40px 48px;text-align:center;flex-shrink:0}.landing-hero-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 16px;border-radius:100px;background:#6366f126;border:1px solid rgba(99,102,241,.3);color:#a5b4fc;font-size:.875rem;font-weight:500;margin-bottom:24px;animation:fadeInUp .6s ease-out}.landing-hero-badge-dot{width:6px;height:6px;border-radius:50%;background:#6366f1;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.5)}}.landing-hero-title{font-size:8rem;font-weight:900;line-height:1.05;margin:0 0 64px;background:linear-gradient(135deg,#fff,#a5b4fc,#818cf8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:fadeInUp .6s ease-out;letter-spacing:-1px}.landing-hero-subtitle-main{font-size:clamp(1.5rem,3vw,2.25rem);font-weight:500;color:#ffffffd9;margin:0 0 32px;line-height:1.3;animation:fadeInUp .6s ease-out .1s both}.landing-hero-desc{font-size:clamp(1.125rem,2vw,1.5rem);font-weight:400;color:#ffffffd9;max-width:780px;margin:0 0 36px;line-height:1.6;animation:fadeInUp .6s ease-out .2s both}.landing-hero-actions{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;animation:fadeInUp .6s ease-out .3s both}.landing-hero-btn{display:inline-flex;align-items:center;gap:10px;padding:16px 32px;border-radius:14px;font-size:1.125rem;font-weight:600;cursor:pointer;transition:all .25s;text-decoration:none;border:none}.landing-hero-btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;box-shadow:0 4px 20px #6366f14d}.landing-hero-btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px #6366f180}.landing-hero-btn-secondary{background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.15);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.landing-hero-btn-secondary:hover{background:#ffffff1f;border-color:#ffffff4d;transform:translateY(-2px)}.landing-stats-wrapper{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:30px;padding:0 24px 40px;width:100%;max-width:880px;margin:0 auto;flex-shrink:0;overflow:visible;box-sizing:border-box}.landing-stats-chart{flex:1;min-width:0;border-radius:18px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:16px;animation:fadeInUp .6s ease-out .6s both}.landing-chart-inner{display:flex;flex-direction:column;height:100%;min-height:220px}.landing-chart-header{display:flex;align-items:center;gap:8px;font-size:.85rem;font-weight:600;color:#ffffffb3;margin-bottom:8px;flex-shrink:0}.landing-chart-header svg{color:#818cf8}.landing-stat-card{position:relative;padding:28px 20px;border-radius:18px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);text-align:center;animation:fadeInUp .6s ease-out both;min-width:0}.landing-stat-card:nth-child(1){animation-delay:.4s}.landing-stat-card:nth-child(2){animation-delay:.5s}.landing-stat-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.landing-stat-icon-blue{background:#6366f126;color:#818cf8}.landing-stat-icon-purple{background:#8b5cf626;color:#a78bfa}.landing-stat-icon-cyan{background:#06b6d426;color:#22d3ee}.landing-stat-icon-pink{background:#ec489926;color:#f472b6}.landing-stat-value{font-size:2.75rem;font-weight:800;line-height:1.1;margin-bottom:16px;background:linear-gradient(135deg,#fff,#a5b4fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap}.landing-stat-label{font-size:1rem;color:#fff9;font-weight:500}.landing-features{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:0 40px 16px;max-width:1100px;margin:0 auto;flex:1;min-height:0}.landing-feature-card{padding:20px 18px;border-radius:16px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all .3s;animation:fadeInUp .6s ease-out .8s both}.landing-feature-card:nth-child(2){animation-delay:.9s}.landing-feature-card:nth-child(3){animation-delay:1s}.landing-feature-card:hover{background:#ffffff0f;border-color:#6366f14d;transform:translateY(-4px)}.landing-feature-icon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:12px;background:linear-gradient(135deg,#6366f133,#8b5cf633);border:1px solid rgba(99,102,241,.2)}.landing-feature-title{font-size:1.05rem;font-weight:700;color:#fff;margin:0 0 6px}.landing-feature-desc{font-size:.8125rem;color:#fff9;line-height:1.5;margin:0}.landing-cta{position:relative;z-index:1;text-align:center;padding:80px 40px;border-radius:24px;background:linear-gradient(135deg,#6366f126,#8b5cf61a);border:1px solid rgba(99,102,241,.2);max-width:1000px;margin:0 auto 60px;animation:fadeInUp .6s ease-out 1.1s both}.landing-cta-title{font-size:clamp(1.5rem,3vw,2.25rem);font-weight:700;color:#fff;margin:0 0 16px}.landing-cta-desc{font-size:1rem;color:#ffffffb3;max-width:500px;margin:0 auto 32px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.landing-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:16px;color:#ffffffb3}.landing-loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-top-color:#6366f1;border-radius:50%;animation:spin .8s linear infinite}.landing-footer{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;align-items:center;justify-content:center;line-height:32px;padding:30px 40px;box-sizing:border-box;background:linear-gradient(180deg,#0a0e2700,#0a0e2799 55%,#0a0e27d9);text-align:center}.landing-footer-inner{display:inline-flex;align-items:center;justify-content:center;gap:24px}.landing-footer-copyright{font-size:.8125rem;color:#ffffffd9;letter-spacing:.4px;white-space:nowrap}.landing-footer-link{display:inline-flex;align-items:center;gap:8px;font-size:.8125rem;color:#c7d2feb3;text-decoration:none;letter-spacing:.4px;transition:color .2s}.landing-footer-link:hover .landing-footer-text{text-decoration:underline;text-underline-offset:3px;text-decoration-color:#ffffff8c}.landing-footer-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;border-radius:50%;background:#ffffff0d;transition:transform .2s}.landing-footer-badge svg{width:100%;height:100%;display:block}.landing-footer-text{font-variant-numeric:tabular-nums;color:#ffffffd9;transition:color .2s}.platform-title-clickable{cursor:pointer;transition:all .2s}.platform-title-clickable:hover{background:#6366f10a;border-color:#6366f14d;box-shadow:#6366f11a 0 2px 8px,#0000000a 0 -1px 1px inset,#6366f124 0 0 0 .5px inset}@media (max-width: 768px){.landing-nav{padding:8px 16px}.landing-footer{padding:30px 16px}.landing-footer-text,.landing-footer-copyright{font-size:.75rem}.landing-footer-inner{gap:16px}.landing-footer-badge{width:18px;height:18px}.landing-nav-brand{font-size:.9rem}.landing-hero{padding:16px 16px 10px}.landing-hero-title{font-size:2rem}.landing-stats-wrapper{flex-direction:column;padding:0 16px 10px;gap:12px}.landing-stats-cards{flex-direction:row;flex:none;gap:10px}.landing-stat-card{padding:12px 10px;flex:1}.landing-stat-value{font-size:1.4rem}.landing-stats-chart{min-height:200px}.landing-features{grid-template-columns:1fr;padding:0 16px 16px;gap:10px}.landing-feature-card{padding:14px 12px}.landing-hero-actions{flex-direction:column;align-items:center}.landing-hero-btn{width:100%;max-width:240px;justify-content:center}}@media (max-width: 480px){.landing-stats-cards{flex-direction:column}.landing-bg-orb{transform:scale(.6)}}.auth-page{position:relative;height:100vh;overflow:hidden;background:linear-gradient(180deg,#0a0e27,#1a1f3a,#0d1117);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.auth-page:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(99,102,241,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.03) 1px,transparent 1px);background-size:60px 60px;pointer-events:none;z-index:0}.auth-card{position:relative;z-index:10;width:100%;max-width:400px;margin:0 16px;padding:32px 28px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:20px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 20px 60px #0006}.auth-card-title{margin:0 0 20px;font-size:1.5rem;font-weight:700;color:#fff;text-align:center;letter-spacing:.5px}.auth-card .auth-tabs{background:#ffffff14}.auth-card .auth-tab{color:#fff9}.auth-card .auth-tab:hover{color:#ffffffe6}.auth-card .auth-tab.active{background:#ffffff1f;color:#fff}.auth-card .auth-form-title{color:#fff;text-align:center}.auth-card .auth-input-wrap{background:#ffffff12;border-color:#ffffff26}.auth-card .auth-input-wrap:focus-within{border-color:#6366f1;background:#ffffff1a}.auth-card .auth-input{color:#fff}.auth-card .auth-input:-webkit-autofill,.auth-card .auth-input:-webkit-autofill:hover,.auth-card .auth-input:-webkit-autofill:focus{-webkit-text-fill-color:#ffffff;-webkit-box-shadow:0 0 0px 1000px transparent inset;transition:background-color 5000s ease-in-out 0s}.auth-card .auth-input::placeholder{color:#fff6}.auth-card .auth-input-icon,.auth-card .auth-pwd-toggle{color:#ffffff80}.auth-card .auth-pwd-toggle:hover{color:#a5b4fc}.auth-card .auth-submit-btn{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.auth-card .auth-submit-btn:hover{background:linear-gradient(135deg,#4f46e5,#7c3aed)}.auth-card .auth-msg-error{background:#ef444426;color:#fca5a5;border-color:#ef44444d}.auth-card .auth-msg-success{background:#22c55e26;color:#86efac;border-color:#22c55e4d}.auth-card .auth-info-box{background:#6366f11a;border:1px solid rgba(99,102,241,.25);border-radius:8px;padding:10px 12px;margin-bottom:4px}.auth-card .auth-info-box p{margin:0;font-size:.9rem;color:#a5b4fc;line-height:1.5}.auth-card .auth-link-btn{color:#ffffff8c}.auth-card .auth-link-btn:hover{color:#a5b4fc}.auth-card .auth-forgot-link{color:#ffffff73}.auth-card .auth-forgot-link:hover{color:#a5b4fc}.auth-card .auth-back-btn{color:#ffffff8c}.auth-card .auth-back-btn:hover{color:#a5b4fc}.panel-scroll-area{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.user-footer{position:relative;flex-shrink:0;margin-top:auto;padding-top:4px}.user-footer-trigger{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:none;border-radius:10px;background:transparent;cursor:pointer;transition:background .2s;font-size:1.125rem;font-weight:600;color:var(--text)}.user-footer-trigger:hover{background:#f1f5f9}.user-footer-avatar{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:var(--text-secondary);color:#fff;font-size:1rem;font-weight:700;flex-shrink:0;line-height:1}.user-footer-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-footer-more{flex-shrink:0;margin-left:auto;font-size:1.25rem;line-height:1;color:var(--text-secondary);letter-spacing:1px}.user-footer-dropdown{position:absolute;bottom:100%;left:0;right:0;margin-bottom:4px;background:#fff;border:1px solid var(--border, #e2e8f0);border-radius:10px;box-shadow:0 -4px 16px #00000014;overflow:hidden;z-index:100}.user-footer-dropdown-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;font-size:1.125rem;font-weight:500;color:var(--text);cursor:pointer;transition:background .15s}.user-footer-dropdown-item:hover{background:#4f6ef714;color:var(--primary)}.user-footer-dropdown-divider{height:1px;background:var(--border, #e2e8f0)}.user-footer-lang-item{cursor:pointer}.user-footer-lang-item:hover{background:#4f6ef714;color:var(--primary)}
